【JAVA基础】Java集合基础

Java集合基础

Java集合是Java编程语言提供的一种用于存储和操作多个对象的容器。这些集合类被组织在java.util包中,并根据其特性和用途被分为多个不同的接口和实现类。

一、主要接口与实现类

Collection接口

  1. 定义:Collection是Java集合框架的根接口,它提供了对集合进行基本操作的方法,如添加、删除、遍历等。
  2. 常用实现类:List、Set、Queue等。

List接口

  1. 定义:List是一个有序的集合,允许包含重复的元素,并可以通过索引访问元素。
    常用实现类:ArrayList、LinkedList、Vector等。
  2. 使用代码:
java 复制代码
List<String> list = new ArrayList<>();  
list.add("A");  
list.add("B");  
list.add("C");  
for (String item : list) {  
    System.out.println(item);  
}  
// 访问特定元素  
String element = list.get(1); // 获取索引为1的元素,即"B"

Set接口

  1. 定义:Set是一个不允许包含重复元素的集合,元素是无序的(根据元素的哈希值决定存储位置)。
    常用实现类:HashSet、LinkedHashSet、TreeSet等。
  2. 使用代码:
java 复制代码
Set<String> set = new HashSet<>();  
set.add("A");  
set.add("B");  
set.add("C");  
for (String item : set) {  
    System.out.println(item);  
}  
// 尝试添加重复元素(不会成功)  
set.add("A");

Map接口

  1. 定义:Map是一个存储键值对(key-value)的集合,每个键都是唯一的,且每个键最多只能映射到一个值。
    常用实现类:HashMap、LinkedHashMap、TreeMap等。
  2. 使用代码:
java 复制代码
Map<String, Integer> map = new HashMap<>();  
map.put("A", 1);  
map.put("B", 2);  
map.put("C", 3);  
for (Map.Entry<String, Integer> entry : map.entrySet()) {  
    System.out.println(entry.getKey() + ": " + entry.getValue());  
}  
// 通过键获取值  
Integer value = map.get("B"); // 获取键为"B"的值,即2

Queue接口

  1. 定义:Queue是一个先进先出(FIFO)的集合,用于在元素的一端插入元素,从另一端删除元素。
    常用实现类:LinkedList、PriorityQueue等。
  2. 使用代码:
java 复制代码
Queue<String> queue = new LinkedList<>();  
queue.add("A");  
queue.add("B");  
queue.add("C");  
while (!queue.isEmpty()) {  
    System.out.println(queue.poll()); // 获取并移除队首元素  
}

二、其他重要接口与类

Iterable接口

  1. 定义:Iterable接口是一个用于遍历集合元素的接口,它实现了iterator()方法,该方法返回一个Iterator对象,用于遍历集合中的元素。
  2. 使用场景:所有实现了Iterable接口的集合类都可以使用for-each循环进行遍历。

Iterator接口

  1. 定义:Iterator接口是一个用于遍历集合元素的迭代器接口,它提供了hasNext()和next()方法,用于判断是否有下一个元素和获取下一个元素。
  2. 使用场景:通常与Iterable接口一起使用,用于遍历集合中的元素。

三、注意事项

  1. 集合只能存储对象的引用:集合类存放的都是对象的引用,而非对象本身。因此,向集合中添加元素时,实际上是添加了元素的引用。
  2. 集合受元素equals方法影响:在集合中,元素的比较和去重等操作通常依赖于元素的equals()方法和hashCode()方法。因此,在使用集合时,需要确保自定义的类正确实现了这两个方法。
  3. 线程安全问题:大多数集合类都不是线程安全的。如果在多线程环境中使用集合类,需要考虑线程安全问题,可以使用同步集合类(如Collections.synchronizedList()、Collections.synchronizedSet()等)或并发集合类(如ConcurrentHashMap、CopyOnWriteArrayList等)。
相关推荐
星火开发设计4 分钟前
C++ multiset 全面解析与实战指南
开发语言·数据结构·c++·学习·set·知识
rannn_11112 分钟前
【Java项目】中北大学Java+数据库课设|校园食堂智能推荐与反馈系统
java·数据库·后端·课程设计·中北大学
NE_STOP20 分钟前
SpringBoot-shiro-jwt-dubbo-redis分布式统一权限系统(完结)
java
zfj32125 分钟前
java函数式接口 @FunctionalInterface用法
java·函数·function
TracyCoder12331 分钟前
并发编程(二):Java原子类(Atomic Classes)全解析
java·原子类·atomic
野犬寒鸦41 分钟前
从零起步学习MySQL || 第十六章:MySQL 分库分表的考量策略
java·服务器·数据库·后端·mysql
lsx2024061 小时前
Eclipse 添加书签
开发语言
木风小助理1 小时前
JavaAtomicInteger底层实现深度解析
java
易营宝1 小时前
高效的跨境电商广告优化系统:易营宝广告投放实操指南
大数据·开发语言·人工智能·php
superman超哥1 小时前
路由的艺术:Rust Web 框架中的高效匹配与类型安全提取
开发语言·rust·编程语言·rust web框架·rust路由