13、集合

集合

一、集合的概念

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进行
排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值