集合
一、集合的概念
1. 概念:集合是一个容器,集合是一个工具,用来存放数量不等的对象。
2. 分类(Collection)
[
3. 集合的学习展开的方面
a. 集合的特点
b. 集合中常用的方法
c. 集合的实现类
d. 集合的遍历
二、Collection集合
1. 特点:可以存储任意类型的对象。java.util包下
2. Collection集合中常用的方法
a) boolean add(Object o):在集合中添加o对象。 *
b) boolean addAll(Collection c): 在指定集合中添加c集合中所有的元素。
c) void clear() : 移除集合中所有的元素 *
d) boolean contains(Object o):返回此集合中是否包含指定对象o,存在
返回true,反之返回false *
e) boolean containsAll(Collection c):返回此集合中是否包含指定回合c
中所有的元素,包含则返回true,否则返回false
f) boolean isEmpty(): 判断此集合的长度是否为0,如果长度为0返回
true,否则返回false
g) boolean remove(Object o):移除集合中指定的元素,删除成功返回
true,否则返回false *
h) boolean removeAll(Collection c): 移除集合中包含在c集合中所有元素
i) int size():返回集合的长度 *
j) Object[] toArray(): 将集合转换成包含所有元素的数组
3. Collection集合没有实现类
4. Collection集合的遍历方式: 参考子集合中的遍历方法
三、List集合
1. 特点:可以存储任意类型的对象;有序,有下标,元素可以重复。***
2. List集合中的常用方法
Collection接口中方法List都能继承到
a) void add(int index,Object o):在集合的指定位置index处添加元素o ***
b) boolean addAll(int index,Collection c): 将集合c所有元素在指定集合的指定位
置处添加
c) Object get(int index):获取指定下标index的元素 *
d) int indexOf(Object o):返回Object在指定集合第一次出现的下标,如果不存
在则返回-1. *
e) int lastIndexOf(Object o):返回Object在指定集合第一次出现的下标,如果不
存在则返回-1.
f) Object remove(int index):移除指定位置的元素,返回被移除的元素。 *
g) Object set(int index,Object o):将指定位置的元素替换成o,返回被替换的元素
h) List subList(int fromIndex,int toIndex):返回指定区间元素保存在List集合
中,包含fromIndex,不包含toIndex *
3. List接口的实现类:ArrayList
4. List集合的遍历
逐一对集合中的元素进行访问的过程称之为集合遍历
a) 下标遍历
b) forEach遍历
语法: for(集合中保存的数据类型 对象名 : 需要遍历的集合)
5. List集合的其他实现类
a) ArrayList:数组实现 查询快 增删慢 JDK1.2版本 线程不安全 效率高
b) Vector:数组实现 JDK1.0版本 线程安全 效率低
c) LinkedList :链表实现 查询慢 增删快
四、泛型
1. 概念: 类型安全的集合。
2. 使用: 集合类型<泛型类型> 集合名 = new 集合类型<泛型类型>();
一旦加上泛型之后,那么集合中只能存放泛型对应的类型的元素。
3. 特点
a) 类型安全的集合,限制了集合中元素的类型
b) 编译时会报错,而非运行时报错
c) 不需要做强制类型转型
d) 泛型不存在多态
4. 泛型类
a) 定义
class 类名<泛型标识符>{
泛型标识符 t;
public 泛型标识符 方法名(泛型标识符 参数名){
}
}
注意:泛型标识符:T V E
b) 创建对象
类名<泛型类型> 对象名 = new 类名<泛型类型>();
5. 泛型接口
a) 定义
interface 接口名<泛型标识符>{
泛型标识符 方法名(泛型标识符 参数名);
}
b) 实现类实现方法
1. 泛型接口实现的方式1
class 类名<泛型类型> implements 接口名<泛型类型>{
public 泛型类型 方法名(泛型类型 参数名){}
}
2. 泛型接口的实现方式2
class 类名<泛型标识符> implements 接口名<泛型标识符>{
public 泛型标识符 方法名(泛型标识符 参数名){}
}
c) 创建对象
类名<泛型类型> 对象名 = new 类名<泛型类型>();
五、Collections工具类
常用方法
1. static void reverse(List list):对集合中的元素进行倒置(反转)
2. static void shuffle(List list): 对集合中的元素进行随机排列
3. static void sort(List list): 对集合中的元素进行排序
六、Set集合
1. 特点:可以存储任意类型的对象;无序,无下标,元素内容不可以重复。
2. set集合中的常用方法
来源于Collection父接口中的方法
3. Set集合的实现类: HashSet
4. Set集合的遍历
forEach遍历
5. HashSet是如何保证元素内容不可重复【重点】
当需要将一个元素插入到Set集合中,首先会调用对象的hashCode()返回的是对象的哈希码值,然后通过一定的换算将其转换成一个从0到添加元素的个数-1的数字,然后将其存放在该数字处;当第二次添加元素的时候同样会调用对象的hashCode(),同样转换成一个数字,如果这个数字和前面的数字相同,则会调用equals()进行比较两个对象的内容是否一致,如果一致则代表元素内容重复则不会添加到Set集合中;如果不一致则会放置在上一个元素的后面。
a) 覆盖hashCode()方法
目的:保证相同对象返回相同的哈希码值,不同对象尽可能返回不同的哈希码值。
b) 覆盖equals()
目的:保证相同内容的对象不会插入到set集合中
6. Set集合其他的实现类【面试】
a) LinkedHashSet:HashSet的子类 能够维持添加到Set集合的顺序
实现元素内容不可重复的方式同HashSet
b) TreeSet:SortedSet(Set的子接口)的实现类 自动对添加到Set集合的元素进行排序。是通过实现Comparable接口,覆盖compareTo方法实现元素内容不可重复。
七、Map集合
1. Map集合的特点【重点】
a) 由任意的键值对(key-value)组成
b) 键(key):无序,无下标,元素不可以重复
c) 值(value):无序,无下标,元素可以重复
如:英汉词典
单词(key) 注释(value)
hi 你好
hello 你好
you 你
2. Map集合中常见方法【重点】
a) put(Key key,Value v):根据key插入key-value,返回值
如果此key不存在则添加新的key-value,反之则将原值覆盖
b) remove(Object key):根据key移除key-value 返回值为值
c) int size():返回map集合的长度
d) get(Object key):根据key获取value 如果不存在返回null
f) boolean containsKey(Object key):是否包含此key
c) boolean containsValue(Object value):是否包含此value
3. Map集合的实现类:HashMap【重点】
4. Map集合的遍历(实际开发)
a) 键遍历
思想:将所有的key看做一个整体,因为key是无序,无下标,元素内容不可以重复,是一个Set集合,通过keySet()返回的就是一个Set集合,再去遍历Set集合获取所有key,然后通过get(key)获取所有的value。
b) 值遍历
思想:将所有的值看做一个整体,通过values()返回的是一个由value组成的Collection集合,遍历Collection集合能够获取所有的value。
c) 键值对遍历
思想:将一个的键值对看做一个整体,是一个Map.Entry对象,由于key:无序,无下标,元素不可以重复,value:无序,无下标,元素可以重复,将所有的Map.Entry对象看做一个整体,其特点为无序,无下标,元素不可以重复,是一个Set集合。通过entrySet返回的就是一个所有的Map.Entry对象组成的Set集合。再遍历Set集合获取每一个Map.Entry对象,再通过Map.Entry中的getKey()和getValue()分别获取Map.Entry对象的key和value
5. Map集合的其他实现类(面试)
a) HashMap:JDK1.2 线程不安全 效率高 可以使用null作为key|value的值
b) Hashtable:JDK1.0 线程安全 效率低 不能使用null作为key|value的值
c) Properties:JDK1.0 Hashtable的子类 key:String value:String
一般用于配置文件的读取
d) LinkedHashMap:可以维持添加到Map集合的顺序
e) TreeMap:SortedMap(Map的子接口)的实现类 自动对添加到Map集合的key进行
排序。
一般用于配置文件的读取
d) LinkedHashMap:可以维持添加到Map集合的顺序
e) TreeMap:SortedMap(Map的子接口)的实现类 自动对添加到Map集合的key进行
排序。