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

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

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

將數(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'};
  // 應該定義或轉(zhuǎn)換成對應的引用類型: 
  // 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");
}

測試結果:

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

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

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

相關文章

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

    EJB基礎知識(入門必看)

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

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

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

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

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

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

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

    springboot中如何將logback切換為log4j2

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

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

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

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

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

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

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

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

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

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

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

最新評論

西和县| 平邑县| 兰溪市| 灵石县| 莎车县| 崇仁县| 射洪县| 绥江县| 巧家县| 九江县| 汤阴县| 龙山县| 莱芜市| 遵化市| 富锦市| 长治县| 军事| 大港区| 育儿| 威远县| 翁牛特旗| 福州市| 赤城县| 托克托县| 洛川县| 金乡县| 崇仁县| 开封县| 安图县| 察隅县| 玉山县| 吴堡县| 绥德县| 深水埗区| 兴业县| 富裕县| 开封市| 洛隆县| 如皋市| 盈江县| 土默特右旗|