集合
什么是集合
Java 集合指一个 Java 对象可以在内部持有若干其他 Java 对象,并对外提供访问接口,我们把这种 Java 对象称为集合
我们需要各种不同类型的集合类来处理不同的数据
集合框架图
集合框架包含三种类型集合
- List 集合:一种有序列表集合
- Set 集合:一种无重复元素集合
- Map 集合:一种键值对(key/value)集合
List 集合
List 接口方法
- boolean add(E e):在末尾添加一个元素
- boolean add(int index, E e):在指定索引添加一个元素
- int remove(int index):删除指定索引元素
- int remove(Object e):删除某个元素
- E get(int index):获取指定索引的元素
- int size():获取元素数量
ArrayList 类
ArrayList 类是 List 接口的一个实现类,它内部使用数组来存储所有元素,默认容量大小为 10(默认容量不足时扩容至原来的1.5 倍)
LinkedList 类
LinkedList 类是 List 接口的一个实现类,它内部使用链表来存储所有元素、
链表是一种计算机数据结构,它的内部如同链条一样,每个元素都指向下一个元素
ArrayList 与 LinkedList 区别
Set 集合
Set 接口方法
- boolean add(E e):添加某个元素
- int remove(object e):删除某个元素
- boolean contains(object e):判断是否包含指定元素
- int size():获取元素个数
HashSet 与 TreeSet 区别
Map 集合
Map 集合是一种键值(key-value)映射表的数据结构,它能高效通过键(key)快速查找值(value)
注意:Map 中不存在重复的 key(如果放入相同的 key,会把原有的 key-value 对应的 value 替换掉)
Map 主要接口方法
- V put(K key, V value):添加某个 key/value 元素
- V remove(Object Key):删除某个 key/value 元素
- V get(Object key):获取 key 对应的 value
- int size():获取 key/value 元素数量
集合泛型
集合元素类型
集合框架中所有集合元素的类型都是 Object 类型(添加到集合中的任意元素都将自动强制转换为 Object 类型存放到集合中,从集合中获取任意元素其类型都是 Object 类型)
List list = new ArrayList();
list.add( 1 );
list.add( 2.2 );
list.add( true );
list.add(“abc”);
int i = (int)list.get(0);
double d = (double)list.get(1);
boolean b = (boolean)list.get(2);
String s = (String)list.get(3);
集合中保存的元素都是 Object 类型对象,获取集合元素也都是 Object 类型对象,必须对其进行强制类型转换
集合泛型
为了解决获取集合元素强制类型转换的麻烦,JDK1.5 中提供了一种新的处理方式 – 泛型
集合泛型就是在创建集合时可以指定集合保存的元素类型的一种处理集合的方式
List<String> list = new ArrayList<String>( );
集合遍历
集合遍历有三种方式,分别是 for 循环、for each 循环、iterator 迭代器
for 循环
for 循环只能用于遍历有序的 List 集合(或泛型),不能用于遍历无序的 Set 集合 和 Map 集合
List<String> list = new ArrayList<>();
list.add( “1” );
list.add( “2.3” );
list.add( “true” );
list.add(“abc”);
for ( int index = 0; index < list.size(); ++index ) {
String element = list.get( index );
}
for each 循环
for each 循环是在 JDK 1.5 中增加的一种新型循环,该循环大大简化了对于集合的遍历操作
for each 循环可用于遍历任何泛型集合框架(Map 集合遍历方式有所不同)
List 集合遍历如下:
List<String> list = new ArrayList<>();
list.add( “1” );
list.add( “2.3” );
list.add( “true” );
list.add(“abc”);
for ( String str : list ) {
String element = str;
}
Map 集合遍历如下:
Map<String, String> map = new HashMap<>();
map.put(“张三”, “13541220873”);
map.put(“李四”,“1372405730”);
map.put(“王五”, “13940110923”)
for ( Map.Entry<String, String> entry : map.entrySet() ) {
String key = entry.getKey();
String value = entry.getValue();
}
iterator 迭代器
iterator 迭代器是 Java 中一种统一遍历集合的方式(所有集合都实现了 iterator 接口)
接口方法
- next( ) 方法:返回下一个集合元
- hasNext( ) 方法:返回是否还有下一个元素
List<Integer> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
// 获取 List 集合 iterator 迭代器对象
iterator<Integer> iterator = list.iterator();
// 遍历集合元素
while ( iterator.hasNext() ) {
Integer element = iterator.next();
System.out.println(element);
}
Map<String,Integer> map = new HashMap<>( );
map.put("张三",23);
map.put("李四",25);
// 获取 Set 集合 iterator 迭代器对象
Set<String> set = map.keySet(); // key 集合
Iterator<String> iterator = set.iterator();
// 遍历 Set 集合元素
while ( iterator.hasNext() ) {
String key = iterator.next();
Integer value = map.get(key);
}
集合工具类
Properties 类
Properties 工具类用于处理属性文件(所谓属性文件就是将Map 形式的键/值对数据存在一个扩展名为“.properties”的文本文件中,常用作软件的配置文件)
Collections 类
Collections 工具类用于操作 Set、List 和 Map 等集合(提供大量方法,用于对集合元素进行排序、查询、修改等操作)
Arrays 类
Arrays 工具类用于操作数组(提供各种操作数组的方法,如排序和搜索)。
集合框架三大特点
- 接口与实现类相分离
- 统一使用迭代器遍历集合
- 支持泛型
集合框架遗留类
由于 Java 的集合框架设计非常久远,中间经历过大规模改进,所以有一小部分集合类是遗留类,不应该继续使用
Hashtable 类
一种线程安全的 Map 实现
Vector 类
一种线程安全的 List 实
Stack 类
基于 Vector 实现的 LIFO 栈
Enumeration<E>
接口
已被 Iterator<E>
取代
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现