从我以前的一本旧 Java 认证书中提取了一个面试问题。
不想真正想知道这是否是一个好的面试问题。它的目的是作为一个简单的健全性检查,该人已经在 Java 中使用简单的集合进行了足够的工作......我没想到一个不正确的答案,无论如何,他们在几个步骤中都弄错了......所以它达到了它的目的.
令我惊讶的部分是,在将它放入 RAD 并运行它之后,它是第 8 步的输出...... java 的行为就像在 addAll 之后的 list1 没有保存 list2 中包含的值,引用list2 中的值?!由于 list2 的清除改变了 list1 的内容?!?
然而,在第 7 步清除之前对 list2 的修改对列表 1 没有影响......我一天的工作现在将通过收集实施的文档脱轨哈哈......这根本不是我所期望的......可以有人在第 8 步解释 list1 内容的原因吗?
public static void main(String[] args)
{
List list = new ArrayList();
System.out.println("1: List1 Post - Constructor\t\t" + list);
System.out.println();
list.add("1");
System.out.println("2: List1 Post - Add 1\t\t\t\t" + list);
System.out.println();
list.add("2");
System.out.println("3: List1 Post - Add 2\t\t\t\t" + list);
System.out.println();
list.add(1,"3");
System.out.println("4: List1 Post - Add three at index 1\t\t" + list);
System.out.println();
List list2 = new ArrayList(list);
System.out.println("5: List1 Post - list2 Constructor\t\t" + list);
System.out.println("5: List2 Post - list2 Constructor\t\t" + list2);
System.out.println();
list.addAll(list2);
System.out.println("6: List1 Post - Add list2 to list1\t\t" + list);
System.out.println("6: List2 Post - Add list2 to list1\t\t" +list2);
System.out.println();
list2 = list.subList(2,5);
System.out.println("7: List1 Post - List 2 sublist of list 2,5\t" + list);
System.out.println("7: List2 Post - List 2 sublist of list 2,5\t" + list2);
System.out.println();
list2.clear();
System.out.println("8: List1 Post - list2 clear\t\t\t" + list);
System.out.println("8: List2 Post - list2 clear\t\t\t" + list2);
System.out.println();
}
1: List1 Post - Constructor []
2: List1 Post - Add 1 [1]
3: List1 Post - Add 2 [1, 2]
4: List1 Post - Add three at index 1 [1, 3, 2]
5: List1 Post - list2 Constructor [1, 3, 2]
5: List2 Post - list2 Constructor [1, 3, 2]
6: List1 Post - Add list2 to list1 [1, 3, 2, 1, 3, 2]
6: List2 Post - Add list2 to list1 [1, 3, 2]
7: List1 Post - List 2 sublist of list 2,5 [1, 3, 2, 1, 3, 2]
7: List2 Post - List 2 sublist of list 2,5 [2, 1, 3]
8: List1 Post - list2 clear [1, 3, 2]
8: List2 Post - list2 clear []