一、接口及实现类:
Collection接口:
子接口-----:
1 List接口:存储有序的,可重复的数据
实现类:
ArrayList(主要实现类)、LinkedList、Vector
2 Set接口:存储无序的、不可重复的数据(类似于集合)
实现类:
HashSet(主要实现类)、LinkedHashSet、TreeSet
Map接口:key-value对--->键值对
实现类:
HashMap(主要实现类)、LinkedHashMap、TreeMap、Hashtable、Properties
Collection接口的方法:
1.添加:
add( )
addAll( )
2.判断:
int size()获取实际存储的元素个数,返回int型
boolean contains()判断是否存在 一个对象,返回boolean类型
3.删除:
void clear()清空集合元素
boolean remove()删除某个元素
4.iterator():返回迭代器对象,用于集合遍历
子接口:
List:
小结: 增 add(Object obj) addAll(Collection coll) 删 remove(Object obj) remove(int index) 改 set(int index, Object ele) 查 get(int index) 插 add(int index, Object ele) addAll(int index, Collection eles) 长度 size() 遍历 iterator() :使用迭代器进行遍历 增强for循环 一般的for循环
二、遍历集合元素的方式
1.Iterator(迭代器)接口-----
1.获取迭代器对象
Iterator iterator=coll.iterator();//多态的方式,右边调用方法,返回一个对象
2.实现遍历
while(iterator.hasNext()){ System.out.println(iterator.next()); //next():①指针下移 ② 将下移以后集合位置上的元素返回 }
额外:迭代器执行原理:
2.增强for循环
for(元素的数据类型 局部变量 : Collection集合或数组){ //操作局部变量的输出操作 } //这里局部变量就是一个临时变量,自己命名就可以
三、 Collection子接口
1.List----有序性
1.常用方法
第一部分:
Collection中声明的15个常用方法;
第二部分:因为List是有序的,进而就有索引,进而就会增加一些针对索引操作的方法。
插入元素 - `void add(int index, Object ele)`:在index位置插入ele元素 - boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来 - 获取元素 - `Object get(int index)`:获取指定index位置的元素 - List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合 - 获取元素索引 - int indexOf(Object obj):返回obj在集合中首次出现的位置 - int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置 - 删除和替换元素 - `Object remove(int index)`:移除指定index位置的元素,并返回此元素 - `Object set(int index, Object ele)`:设置指定index位置的元素为ele
2.List及其实现类特点
java.util.Collection:存储一个一个的数据 |-----子接口:List:存储有序的、可重复的数据 ("动态"数组) |---- ArrayList:List的主要实现类;线程不安全的、效率高;底层使用Object[]数组存储 在添加数据、查找数据时,效率较高;在插入、删除数据时,效率较低 |---- LinkedList:底层使用双向链表的方式进行存储;在对集合中的数据进行频繁的删除、插入操作时,建议使用此类 在插入、删除数据时,效率较高;在添加数据、查找数据时,效率较低; |---- Vector:List的古老实现类;线程安全的、效率低;底层使用Object[]数组存储
2.Set----无序性、不可重复性
1.常用方法:即Collection的15个常用方法
2.Set及其实现类特点
java.util.Collection:存储一个一个的数据 |-----子接口:Set:存储无序的、不可重复的数据(高中学习的集合) |---- HashSet:主要实现类;底层使用的是HashMap,即使用数组+单向链表+红黑树结构进行存储。(jdk8中) |---- LinkedHashSet:是HashSet的子类;在现有的数组+单向链表+红黑树结构的基础上,又添加了 一组双向链表,用于记录添加元素的先后顺序。即:我们可以按照添加元素的顺序 实现遍历。便于频繁的查询操作。 |---- TreeSet:底层使用红黑树存储。可以按照添加的元素的指定的属性的大小顺序进行遍历。
注意:添加到HashSet/LinkedHashSet中元素的要求:
要求元素所在的类要重写两个方法:equals() 和 hashCode()。 同时,要求equals() 和 hashCode()要保持一致性!我们只需要在IDEA中自动生成两个方法的重写即可,即能保证两个方法的一致性。
四、Map接口
1.常用方法
- 添加、修改操作: - Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中 - void putAll(Map m):将m中的所有key-value对存放到当前map中 - 删除操作: - Object remove(Object key):移除指定key的key-value对,并返回value - void clear():清空当前map中的所有数据 - 元素查询的操作: - Object get(Object key):获取指定key对应的value - boolean containsKey(Object key):是否包含指定的key - boolean containsValue(Object value):是否包含指定的value - int size():返回map中key-value对的个数 - boolean isEmpty():判断当前map是否为空 - boolean equals(Object obj):判断当前map和参数对象obj是否相等 - 元视图操作的方法: - Set keySet():返回所有key构成的Set集合 - Collection values():返回所有value构成的Collection集合 - Set entrySet():返回所有key-value对构成的Set集合
2.Map及其实现类对比
java.util.Map:存储一对一对的数据(key-value键值对,(x1,y1)、(x2,y2) --> y=f(x),类似于高中的函数) |---- HashMap:主要实现类;线程不安全的,效率高;可以添加null的key和value值;底层使用数组+单向链表+红黑树结构存储(jdk8) |---- LinkedHashMap:是HashMap的子类;在HashMap使用的数据结构的基础上,增加了一对双向链表,用于记录添加的元素的先后顺序, 进而我们在遍历元素时,就可以按照添加的顺序显示。 开发中,对于频繁的遍历操作,建议使用此类。 |---- TreeMap:底层使用红黑树存储;可以按照添加的key-value中的key元素的指定的属性的大小顺序进行遍历。需要考虑使用①自然排序 ②定制排序。 |---- Hashtable:古老实现类;线程安全的,效率低;不可以添加null的key或value值;底层使用数组+单向链表结构存储(jdk8) |---- Properties:其key和value都是String类型。常用来处理属性文件。标签:index,元素,框架,int,Object,value,笔记,key,集合 From: https://blog.csdn.net/2403_87867004/article/details/145075139