List Set Map之间的区别详解

1.List,Set 都继承了Collection接口,Map不是

2.List特点:①可以允许重复的对象;
②可以插入多个null元素;
③是一个有序容器,输出的顺序就是插入的顺序;
④支持for循环通过下标来遍历,也支持迭代器
⑤常用的实现类有ArrayList,LinkedList,Vector
LinkedList:底层基于链表实现,链表内存是散乱的,每个元素储存本身的地址同时还要存储下一个元素的内存地址,链表增删快,查找慢
ArrayList与Vector:ArrayList是非线程安全的,效率高;Vector是线程安全的,效率慢;

3.Set特点:①无重复对象,重复会被覆盖掉;
②无序容器(元素在set中的存放位置,是根据该元素的hashCode来存放的,位置其实是固定的)
③只能迭代,因为他无序,无法用下标来循环遍历
④只允许一个null元素
⑤常用实现类HashSet,LinkedHashSet,TreeSet
HashSet:基于HashMap实现的HashSet,HashMap,HashSet是非线程安全的,HashTable是线程安全的
TreeSet:实现了SortedSet接口,所以TreeSet是一个根据compare(),compareTo()定义的进行排序的有序容器

4.Map特点:①Map不是collection的子接口或实现类。Map是一个接口;
②Map的每个Entry都持有两个对象,一个键,一个值,Map可能存在相同的值对象,但键对象必须都是唯一的
③Map里可以存在任意个null值,但只能有一个null键
④常用实现类HashMap,HashTable,LinkeHashMap,Treemap
TreeMap也通过compareable,comparetor维护了一个排序顺序
HashMap非线程安全,高效,支持null;
HashTable线程安全,低效,不支持null
SortedMap有一个实现类:TreeMap

推荐阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 1,290评论 0 13
  • Java8张图 11、字符串不变性 12、equals()方法、hashCode()方法的区别 13、...
    Miley_MOJIE阅读 2,915评论 0 11
  • 平遥是一个温暖的小城,虽然她的温暖正在被商业化不断蚕食。这个世界上有很多温暖的小地方正在消失,所以要在有生之年尽量...
    眼泪无痕阅读 102评论 0 0
  • 1, 如果加上斜的也可以。dfs加四种情况dfs(grid,i-1,j-1);dfs(grid,i+1,j+1);...
    夜皇雪阅读 59评论 0 0
  • 画了十分钟。 颜色是自己搭配的,感觉又进步了。
    夏暖心阅读 114评论 1 2