偶然有人问到了这个问题,由于自己理解的不是很清楚,回去上网查了一下,简单总结分享给大家。
从本质上来说,List和Set均是接口,且继承了Collection接口。我们经常用到的ArrayList、HashSet分别是继承了List和Set接口,由于用到了泛型,在实际运用时可以指定实际的类型来使用。通常我们用它们来存储对象,当然用的比较多的还有Map,它们都提供了插入、删除和查找的接口,且支持使用Iterator。那么,List和Set之间究竟有什么区别,在使用过程中应该如何区分?
List和Set区别
(1)List和Set之间很重要的一个区别是是否允许重复元素的存在,在List中允许插入重复的元素,而在Set中不允许重复元素存在,即使插入相同元素也会进行替换。我分别对ArrayList和HashSet插入相同元素进行了验证:
HashSet<String> hset = new HashSet<String>();
ArrayList<String> arrlst = new ArrayList<String>();
hset.add("hello");
hset.add("hello");
arrlst.add("hello");
arrlst.add("hello");
System.out.println("hset size: "+hset.size()+" toString: "+hset.toString());
System.out.println("arrlst size: "+arrlst.size()+"