首页 > 编程知识 正文

java中号与equals方法的区别,java与javase的区别

时间:2023-05-03 12:18:38 阅读:236377 作者:1954

我们在编码时经常需要将一些元素添加到一个List中,此时我们一般有两种选择:Collections.addAll()或者是ArrayList.addAll()。

1. 在需添加元素比较少的情况下,并在List的size在万级以上时,一般建议Collections.addAll(),但当List的size较小时,两种方法没有什么区别,甚至ArrayList.addAll()更好。

2. 当我们将一个数组添加到一个List中时,Collections.addAll()和ArrayList.addAll()没有什么性能差异,但当我们将一个List添加到一个List中时,建议使用ArrayList.addAll()。

3. 添加数组和列表,要比添加元素快。

HashMap和HashSet有类似用法。

示例代码如下(为了尽量不让gc对实验结论影响,特意将jvm设置成了16G):

[java] view plain copy import java.util.ArrayList;  import java.util.Arrays;  import java.util.Collections;  import java.util.List;    public class CollectionsTest {        public static void main(String[] args) {            List<Integer> list1 = new ArrayList<Integer>() {{add(0); add(-1);}};          List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(2, 4, -9));            list1.addAll(list2);          System.out.println(list1);          list2.set(0, 100000);          System.out.println(list1);//深复制          System.out.println();            //功能性展示          Collections.addAll(list2, 34, 67, 78);          System.out.println(list2);          list2.addAll(Arrays.asList(34, 67, 78));          System.out.println(list2);          System.out.println();            //性能展示          System.out.println("添加元素---------------------------n");          for(int size = 1000; size < 100000000; size *= 10) {              long time = System.nanoTime();              List<Integer> list3 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  list3.addAll(Arrays.asList(1, 45, 34, 456, 1212, -6, 43, 55));              }              System.out.println("ArrayList.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time));                            time = System.nanoTime();              List<Integer> list4 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  Collections.addAll(list4, 1, 45, 34, 456, 1212, -6, 43, 55);              }              System.out.println("Collections.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time) + "n");          }          System.gc();                    System.out.println("添加数组---------------------------n");          Integer[] arr = {1, 45, 34, 456, 1212, -6, 43, 55};          for(int size = 1000; size < 100000000; size *= 10) {              long time = System.nanoTime();              List<Integer> list3 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  list3.addAll(Arrays.asList(arr));              }              System.out.println("ArrayList.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time));                            time = System.nanoTime();              List<Integer> list4 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  Collections.addAll(list4, arr);              }              System.out.println("Collections.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time) + "n");          }          System.gc();                    System.out.println("添加列表---------------------------n");          ArrayList<Integer> list = new ArrayList<Integer>(Arrays.asList(1, 45, 34, 456, 1212, -6, 43, 55));          for(int size = 1000; size < 100000000; size *= 10) {              long time = System.nanoTime();              List<Integer> list3 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  list3.addAll(list);              }              System.out.println("ArrayList.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time));                            time = System.nanoTime();              List<Integer> list4 = new ArrayList<Integer>();              for(int i = 0; i < size; i++) {                  Collections.addAll(list4, list.toArray(new Integer[0]));              }              System.out.println("Collections.addAll()@size = " + size + "ntime:" + (System.nanoTime() - time) + "n");          }      }  }   运行截图展示:




HashMap和HashSet的类似用法

示例代码:

[java] view plain copy import java.util.Collections;  import java.util.HashMap;  import java.util.HashSet;    public class CollectionsTest {        public static void main(String[] args) {                    HashSet<Integer> set1 = new HashSet<Integer>();          HashSet<Integer> set2 = new HashSet<Integer>() {{add(5);}};                    Collections.addAll(set1, 2, 4, 6, 7);          System.out.println(set1);                    set1.addAll(set2);          System.out.println(set1);                    HashMap<Integer, Integer> map1 = new HashMap<Integer, Integer>(){{put(1, 5);}};          HashMap<Integer, Integer> map2 = new HashMap<Integer, Integer>(){{put(3, 4);}};                    map1.putAll(map2);          System.out.println(map1);      }  }   运行截图:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。