最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java 數(shù)組元素倒序的三種方式(小結(jié))

 更新時間:2019年09月24日 14:38:23   作者:Ramer-F  
這篇文章主要介紹了Java 數(shù)組元素倒序的三種方式(小結(jié)),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

將數(shù)組元素反轉(zhuǎn)有多種實現(xiàn)方式,這里介紹常見的三種.

直接數(shù)組元素對換

@Test
public void testReverseSelf() throws Exception {
  System.out.println("use ReverseSelf");

  String[] strings = { "ramer", "jelly", "bean", "cake" };
  System.out.println("\t" + Arrays.toString(strings));
  for (int start = 0, end = strings.length - 1; start < end; start++, end--) {
    String temp = strings[end];
    strings[end] = strings[start];
    strings[start] = temp;
  }
  System.out.println("\t" + Arrays.toString(strings));
}
 

使用ArrayList: ArrayList存入和取出的順序是一樣的,可以利用這里特性暫時存儲數(shù)組元素.

@Test
public void testArrayList() throws Exception {
  System.out.println("use ArrayList method");

  String[] strings = { "ramer", "jelly", "bean", "cake" };
  System.out.println("\t" + Arrays.toString(strings));
  List<String> list = new ArrayList<>(strings.length);
  for (int i = strings.length - 1; i >= 0; i--) {
    list.add(strings[i]);
  }
  strings = list.toArray(strings);
  System.out.println("\t" + Arrays.toString(strings));
}

使用Collections和Arrays工具類

@Test
public void testCollectionsReverse() throws Exception {
  System.out.println("use Collections.reverse() method");

  String[] strings = { "ramer", "jelly", "bean", "cake" };
  System.out.println("\t" + Arrays.toString(strings));
  // 這種方式僅針對引用類型,對于基本類型如:
  // char[] cs = {'a','b','c','g','d'};
  // 應(yīng)該定義或轉(zhuǎn)換成對應(yīng)的引用類型: 
  // Character[] cs = {'a','b','c','g','d'};
  Collections.reverse(Arrays.asList(strings));
  System.out.println("\t" + Arrays.toString(strings));
}

速度測試:

@Test
public void testTimeDuration() throws Exception {
  recordTime(ArrayReverse.class,"testCollectionsReverse");
  recordTime(ArrayReverse.class,"testArrayList");
  recordTime(ArrayReverse.class,"testReverseSelf");
}

private static String[] strings = new String[1000000];
{
  for (int i = 0; i < 1000000; i++) {
    strings[i] = String.valueOf(i);
  }
}
/**
 * 記錄操作執(zhí)行總時間.
 *
 * @param <T> the generic type
 * @param clazz the clazz
 * @param methodName the method name
 */
public <T> void recordTime(Class<T> clazz, String methodName) {
  long start = System.currentTimeMillis();
  System.out.println("start: " + start);

  Method[] declaredMethods = clazz.getDeclaredMethods();
  for (Method method : declaredMethods) {
    String name = method.getName();
    if (name.equals(methodName)) {
      try {
        method.invoke(clazz.newInstance());
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
  long end = System.currentTimeMillis();
  System.out.println("end: " + end);
  System.out.println("duration: " + (end - start) + " ms");
}

測試結(jié)果:

使用Collections和Arrays工具類: 12 ms
使用ArrayList: 7 ms
直接數(shù)組元素對換: 4 ms
當(dāng)數(shù)據(jù)量越來越大時,使用ArrayList的方式會變得很慢.
直接使用數(shù)組元素對換,總是最快完成.

總結(jié): 使用Collections和Arrays工具類反轉(zhuǎn)數(shù)組元素更簡單,但是在原數(shù)組上操作時速度更快,并且占用最少的內(nèi)存.

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • EJB基礎(chǔ)知識(入門必看)

    EJB基礎(chǔ)知識(入門必看)

    下面小編就為大家?guī)硪黄狤JB基礎(chǔ)知識(入門必看)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Java詳細(xì)講解包的作用以及修飾符的介紹

    Java詳細(xì)講解包的作用以及修飾符的介紹

    本文主要講述的是包的使用和注意事項和四種訪問修飾符public,protected,默認(rèn)的,private的訪問范圍及實例,感興趣的朋友一起來看看
    2022-05-05
  • MybatisPlus插件自動維護(hù)更新和創(chuàng)建時間方式

    MybatisPlus插件自動維護(hù)更新和創(chuàng)建時間方式

    這篇文章主要介紹了MybatisPlus插件自動維護(hù)更新和創(chuàng)建時間方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • Java實用工具之使用oshi獲取主機信息的方法

    Java實用工具之使用oshi獲取主機信息的方法

    這篇文章主要介紹了Java實用工具之使用oshi獲取主機信息的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • springboot中如何將logback切換為log4j2

    springboot中如何將logback切換為log4j2

    springboot默認(rèn)使用logback作為日志記錄框架,常見的日志記錄框架有l(wèi)og4j、logback、log4j2,這篇文章我們來學(xué)習(xí)怎樣將logbak替換為log4j2,需要的朋友可以參考下
    2023-06-06
  • Java8加java10等于Java18的版本查看及特性詳解

    Java8加java10等于Java18的版本查看及特性詳解

    這篇文章主要為大家介紹了Java?8加java10等于Java18的各個版本要點詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • Java動態(tài)代理四種實現(xiàn)方式詳解

    Java動態(tài)代理四種實現(xiàn)方式詳解

    這篇文章主要介紹了Java四種動態(tài)代理實現(xiàn)方式,對于開始學(xué)習(xí)java動態(tài)代理或者要復(fù)習(xí)java動態(tài)代理的朋友來講很有參考價值,有感興趣的朋友可以參考一下
    2021-04-04
  • 基于Arrays.sort()和lambda表達(dá)式

    基于Arrays.sort()和lambda表達(dá)式

    這篇文章主要介紹了Arrays.sort()和lambda表達(dá)式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 從零開始Mybatis連接數(shù)據(jù)庫的方法

    從零開始Mybatis連接數(shù)據(jù)庫的方法

    這篇文章主要介紹了Mybatis連接數(shù)據(jù)庫的方法,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-02-02
  • Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的方法詳解

    Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的方法詳解

    這篇文章主要給大家介紹了關(guān)于Spring Data MongoDB中實現(xiàn)自定義級聯(lián)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11

最新評論

确山县| 收藏| 华坪县| 渝中区| 望江县| 乐昌市| 平利县| 同江市| 拜泉县| 金湖县| 周口市| 汉川市| 栖霞市| 云霄县| 新田县| 绥阳县| 泸西县| 达日县| 西安市| 武乡县| 大化| 兴文县| 邹城市| 长岛县| 交口县| 巫溪县| 开封县| 西乌珠穆沁旗| 瓦房店市| 阿图什市| 江津市| 繁峙县| 盈江县| 玉屏| 金堂县| 江城| 长宁区| 府谷县| 昌邑市| 凌云县| 临洮县|