第一问:List是接口,ArrayList是List的实现类。
第二问:ArrayList是List的实现类,HashSet是Set的实现类,List和Set都实现了Collection接口。
ArrayList底层是动态数组,HashSet底层是哈希表。
ArrayList存储的是对象的引用,HashSet存储的是之前检索对象用的hashcode,所以当存入对象时需要重写hashcode,如果只是比较对象,只需要重写equals方法。
ArrayList存储有序可重复的数据,HashSet存储无序不可重复的数据。