1.下面的程序能正常运行吗?
public class Test03 {
public static void main(String[] args) {
String[] data = {"java","JAVA","Java"};
List<String> list = Arrays.asList(data);
list.add("JavA");
}
}
答:不能正常运行,会抛出异常。
这里Arrays.asList方法返回的list是Arrays的静态内部私有类实现的,不是常见的那个ArrayList,这里的list继承自AbstractList,但是只实现了size、toArray、get、set、contains几个方法。其他常见的add、remove等方法没有实现,所以这里执行add()方法就抛出了异常。即Arrays.asList方法返回的List是一个长度不可变的列表。
2、下面程序的输出结果是什么?
public class Test03 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("java");
Vector<String> vector = new Vector<>();
vector.add("java");
System.out.println(list.equals(vector));
}
}
答:输出为true。因为集合列表的相等只关心元素数据的比较,器equals方法都是AbtractList中的实现,比较的依据是通过迭代器遍历元素依次通过equals方法比较,所以结果为true,其他集合如Map、Set同理。
持续更新~~~