gpt4 book ai didi

java - 在 java 中打印 ArrayList 时的不同输出

转载 作者:搜寻专家 更新时间:2023-11-01 01:39:57 26 4
gpt4 key购买 nike

查看两个输出的最后两行为什么不同?我对方案1很满意

程序一

public static void main(String[] args) 
{
ArrayList al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
System.out.println(al);
System.out.println("-----------------------------------");

al.addAll(2, al);
System.out.println("-----------------------------------");
System.out.println(al);

System.out.println(al.get(2).getClass());
}

Output :

[10, 20, 30]
-----------------------------------
-----------------------------------
**[10, 20, 10, 20, 30, 30]
class java.lang.Integer**

我对程序 2 的输出不满意为什么打印 arraylist 时输出不同?为什么“java.util.ArrayList”是 prog 2 的最后一行输出,而 prog1 的输出是“java.lang.Integer”

程序二

public static void main(String[] args) 
{
ArrayList al = new ArrayList();
al.add(10);
al.add(20);
al.add(30);
System.out.println(al);
System.out.println("-----------------------------------");

al.add(2,al);
al.add(8);
al.add(2);
al.add(4);
al.add(1);
System.out.println("-----------------------------------");
System.out.println(al);
System.out.println(al.get(2).getClass());
}

Output :

[10, 20, 30]
-----------------------------------
-----------------------------------
[10, 20, (this Collection), 30, 8, 2, 4, 1]
class java.util.ArrayList

最佳答案

而不是 al.add(2, al); , 你几乎肯定想要 al.addAll(2, al); , 这将添加 al内容 (在该方法调用完成之前)到 al .

目前,您只是添加一个 ArrayList反对列表,因为你的 ArrayList由于缺少通用参数(不可取!),可以包含任何旧东西,这编译和运行得很好。

您遇到此问题是因为您使用的是通用 ArrayList没有任何通用参数。如果您明确使用 ArrayList<Integer> ,那么该行就不会编译。仅出于遗留和向后兼容性原因才支持在没有此类参数的情况下使用它,应避免使用。

关于java - 在 java 中打印 ArrayList 时的不同输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51723361/

26 4 0