Java 这三种方法的区别是什么? String[]things={“你好”、“塑料”、“鸡蛋”}; List list1=新的ArrayList(); //将数据添加到我的列表类型1 for(int i=0;i

Java 这三种方法的区别是什么? String[]things={“你好”、“塑料”、“鸡蛋”}; List list1=新的ArrayList(); //将数据添加到我的列表类型1 for(int i=0;i,java,Java,它们都做相同的事情,但复杂程度不同 第一个是最原生的,使用索引 第二个使用foreach循环样式的字符串迭代器 第三个使用eachmethod样式的加法 需要注意的是,像3rd one这样的高级方法在较低版本的java(如android_sdk)中可能不受支持 这是每个循环的。它与循环的不同之处在于,在执行循环之前,不需要指定条件。它对things数组中的每个项执行一次 //Add my data to my list type2 for (String s : things) { li

它们都做相同的事情,但复杂程度不同

  • 第一个是最原生的,使用索引
  • 第二个使用foreach循环样式的字符串迭代器
  • 第三个使用eachmethod样式的加法
  • 需要注意的是,像3rd one这样的高级方法在较低版本的java(如android_sdk)中可能不受支持 这是每个循环的
    。它与循环的
    不同之处在于,在执行循环之前,不需要指定条件。它对
    things
    数组中的每个项执行一次

    //Add my data to my list type2
    for (String s : things) {
        list1.add(s);
    }
    
    在这个方法中,使用了
    数组
    asList
    method of
    Arrays
    类返回一个由指定数组支持的列表,在您的例子中,该数组就是
    things
    。然后使用
    addAll
    方法将
    asList
    方法返回的列表中的每个项目添加到
    list1


    基本上,它们都做相同的事情,即在
    list1
    arraylist中添加
    事物
    数组的所有项。

    在哪些方面有区别?从功能上讲,它们都实现了相同的功能。真的吗?3(2)创建迭代器对象。(3) 创建一个数组包装器对象,在添加之前,基础数组由
    addAll
    克隆,因此效率相对较低。(1) 看起来效率最高,但我认为现代编译器能够在引擎盖下将(2)转换为(1)。在(3)中,数组列表容量只增加一次,因为目标大小是立即知道的。TL;DR:效率取决于所添加阵列的大小。
    for (int i = 0; i < things.length; i++) {
        list1.add(things[i]);
    }
    
    //Add my data to my list type2
    for (String s : things) {
        list1.add(s);
    }
    
    //Add my data to my list type3
    list1.addAll(Arrays.asList(things));