List、Map、Set三个接口的特点与区别
掌握三个接口的特点与区别
特点
- List与Set具有相似性,它们都是单列元素的集合,所以,他们又一个共同的父接口——Collection。set里面不允许有重复的元素,即不能有两个相等的对象。假设Set集合中有了一个A对象,现在我要向Set集合存一个B对象,但B对象与A对象equals相等,则B对象存储不进去。所以,Set集合的add有一个Boolean的返回值,当集合中没有某个元素,此时add方法可以成功加入该元素并返回true,反之返回false。
- list表示有先后顺序的集合,当我们多次调用add(Obj e)方法时,每次加入的对象都是有顺序的,按照先来后到的顺序排序,当然也可以插队,调用add(int index,Obj e)方法,一个对象可以返回存储进List中,List除了可以用iterator接口获取所有的元素,还可以调用get(index i)来明确的取第几个。
- Map与List和Set不同,它是双列的集合,其中有put方法,put(obj key,obj value),每次存储要存储一对key/value,不能存储重复的key,这个重复的规则也是按equals比较相等。
区别
共同点:
- 都是常用的容器,都是借口
不同点:
- 储存结构不同:List和Map是存储单列的集合,Map存储的是key/value键值对的集合
- 元素是否可以重复:List允许重复,Map允许value重复,Set不允许重复
- 是否有序:List有序,Map无序,Set无序