A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

List,Map,Set三个接口存元素时各有什么不同啊?
寻高手详解!

6 个回复

倒序浏览
List :一系列数据的列表,允许重复.
Set :一系列数据的集合,不允许重复.
Map:一系列映射列表,键值对..

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
List接口
  List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
  除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个 ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
  实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。


Set接口
  Set是一种不包含重复的元素的Collection,即任意的两个元素e1和e2都有e1.equals(e2)=false,Set最多有一个null元素。
  很明显,Set的构造函数有一个约束条件,传入的Collection参数不能包含重复的元素。
  请注意:必须小心操作可变对象(Mutable Object)。如果一个Set中的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。


Map接口
  请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个 value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报
大的关系就是:List和Set是Collection的子接口。而Map和Collection是同一级别的~~~

List、Set放置的元素都是单个的Object类型的对象,而Map中一次放入两个对象,是以健值对的形式存储的(本质上是一个Map.Entry对象,由他来操作key和value)

List中元素是有序的可以重复的,而Set中元素是无序且不可重复。

Map元素中是一组对象,成对出现的。唯一注意的是key不可以重复,value是可以的。

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
List 以特定次序来持有元素,可有重复元素。

Set 无法拥有重复元素,内部排序。

Map 保存key-value值,value可多值

想起一个形象的比喻:

List=排成一个长队的小猪,可以重复的对象集合

Map=放在一个个,有房间号的屋子里的一群小猪(key,value)

set=一群小猪贴上号,然后赶到一个猪圈里(不可重复)

从网上找到的,感觉很形象。
回复 使用道具 举报

List下面有两个子类:ArryList和LinkedList
ArryList底层数据结构式数组
LinkedList底层数据结构式链表
Map下面的两个子类:HashMap和TreeMap
HashMap底层数据结构式哈希表,里面存放键值对
TreeMap底层数据结构式二叉树,里面存放键值对
Set下面的两个子类:HashSet和TreeSet
HashSet底层数据结构是哈希表
TreeSet底层数据结构是二叉树

当你存数据时,依据不同的数据结构和内容可以选择不同的集合进行存储
回复 使用道具 举报
List动态集合的接口,好处是可以动态添加元素。很方便的通过Itractor迭代器来遍历集合元素。
Map是键值对形式的集合,好处是可以通过相应键找到相应的值,就好比一把钥匙开一把相应的锁。
set也是一种集合,其相邻的两个元素之间的有关系机制,好处是方便的横向的搜索相邻集合元素,但一旦删除其中的一个元素,则其相邻元素关系就得变更,不方便动态的添加和删除元素。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马