List、Set、Map 之间的区别是什么?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
LIST和set继承自collection,Map是一个接口
List:
可以允许重复的对象
可以插入多个null元素
List是一个有序容器,保持了每个元素的插入顺序,输出的顺序就是插入的顺序
常用的实现类有ArrayList,linkedList、vector,其中ArrayList最为流行,它提供了使用索引的随意访问,LinkedList则对于经常需要从list中添加删除的场合更为合适
Set:
不允许重复
只可以插入一个null元素
是一个无序容器,无法保证每个元素的存储顺序,Treeset通过Comparator或者Comparable维护了一个排序顺序
Set接口最流行的几个实现类是HashSet,linkedHashSet、TreeSet。最为流行的是基于HashMap实现的HashSet,TreeSet还实现了SortedSet接口,因此TreeSet是一个根据compare()和compareTo()的定义进行排序的有序容器
Map:
Map不是collection的子接口或者实现类,Map是一个接口
Map的每个Entry都持有两个对象,也就是一个键一个值,Map可能会持有相同的值对象但键对象必须是唯一的
TreeMap也通过Comparator或者Comparable维护一个排序顺序
Map里你可以随意拥有多个null值但是只能有一个null键
Map流行的几个实现类HashMap、LinkedHashMap、HashTable和TreeMap