1.判断集合是否相等时只须关注元素是否相等即可。
public class listAndVector { public static void main(String[] args) { ArrayList<String> strs = new ArrayList<String>(); strs.add("A"); Vector<String> strs2 = new Vector<String>(); strs2.add("A"); System.out.println(strs.equals(strs2)); } }
运行结果:
2.subList产生的列表只是一个视图,所有的修改动作直接作用于原列表。
public class subList1 { public static void main(String[] args) { // 定义一个包含两个字符串的列表 List<String> c = new ArrayList<String>(); c.add("A"); c.add("B"); // 构造一个包含c列表的字符串列表 List<String> c1 = new ArrayList<String>(c); // subList生成与c相同的列表 List<String> c2 = c.subList(0, c.size()); // c2增加一个元素 c2.add("C"); System.out.println("c==c1? " + c.equals(c1)); System.out.println("c==c2? " + c.equals(c2)); } }
运行结果:
3.生成子列表后不要再操作原列表
public class subList2 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); List<String> subList = list.subList(0, 2); //原字符串增加一个元素 list.add("D"); System.out.println("原列表长度:"+list.size()); System.out.println("子列表长度:"+subList.size()); } }
运行结果:
4.只要生成的子列表多于一个,则任何一个子列表就都不能修改了,否则就会抛出ConcurrentModificationException异常。
public class subList3 { public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("A"); list.add("B"); list.add("C"); List<String> subList1 = list.subList(0, 2); List<String> subList2 = list.subList(0, 2); //原字符串增加一个元素 list.add("D"); System.out.println("子列表长度:"+subList1.size()); System.out.println("子列表长度:"+subList2.size()); } }
运行结果: