java集合
在Java中,集合框架是一组接口和类,用于表示和操作对象集合。以下是Java集合框架的主要知识点和使用总结:
1. 集合接口和类层次结构
接口:
- Collection:集合层次中的根接口,表示一组对象。
- List:有序集合,允许重复元素。
- Set:不包含重复元素的集合。
- Queue:用于在处理之前保存元素的集合,按照特定的顺序处理。
类:
- AbstractCollection:实现大部分Collection接口的骨干实现。
- AbstractList、AbstractSet、AbstractQueue:分别为List、Set、Queue提供骨干实现。
2. 具体实现类
List的实现:
- ArrayList:基于动态数组,允许随机访问,适合查找和更新操作。
- LinkedList:基于双向链表,适合插入和删除操作。
Set的实现:
- HashSet:基于哈希表,不保证顺序。
- LinkedHashSet:保持插入顺序。
- TreeSet:基于红黑树,元素按自然顺序或Comparator排序。
Queue的实现:
- PriorityQueue:基于优先堆的无界优先队列。
- ArrayDeque:基于动态数组的双端队列。
3. 映射(Map)
- Map:将键映射到值的对象。
- HashMap:基于哈希表的实现,不保证顺序。
- LinkedHashMap:保持插入顺序。
- TreeMap:基于红黑树,按键自然顺序或Comparator排序。
4. 集合操作
- 添加元素:
add(E e)
、put(K key, V value)
。 - 删除元素:
remove(Object o)
、remove(K key)
。 - 查找元素:
contains(Object o)
、containsKey(K key)
。 - 迭代集合:使用
Iterator
或增强型for
循环。 - 大小:
size()
。
5. 迭代器(Iterator)
- 用于遍历集合中的元素。
- 方法:
hasNext()
、next()
、remove()
。
6. 泛型
- Java集合框架广泛使用泛型,以提供类型安全。
- 例如:
List<String>
、Set<Integer>
。
7. 工具类
- Collections:提供对集合操作的支持,如排序、查找、填充等。
8. 使用示例
import java.util.ArrayList;
import java.util.HashSet;
import java.util.HashMap;
import java.util.List;
import java.util.Set;
import java.util.Map;
public class CollectionDemo {
public static void main(String[] args) {
// List示例
List<String> arrayList = new ArrayList<>();
arrayList.add("Apple");
arrayList.add("Banana");
System.out.println("List: " + arrayList);
// Set示例
Set<String> hashSet = new HashSet<>();
hashSet.add("Apple");
hashSet.add("Banana");
System.out.println("Set: " + hashSet);
// Map示例
Map<String, Integer> hashMap = new HashMap<>();
hashMap.put("Apple", 1);
hashMap.put("Banana", 2);
System.out.println("Map: " + hashMap);
// 迭代List
for (String fruit : arrayList) {
System.out.println(fruit);
}
// 迭代Map
for (Map.Entry<String, Integer> entry : hashMap.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
9. 注意事项
- 线程安全:Java集合框架中的大多数集合都不是线程安全的。可以使用
Collections.synchronizedXXX
方法或java.util.concurrent
包下的集合来保证线程安全。 - 性能考虑:根据具体的使用场景选择合适的集合实现。
Java集合框架是Java编程中非常重要的部分,理解和掌握它对于编写高效和正确的Java应用程序至关重要。
时间复杂度分析
数组的增删改查
ArrayList底层实现原理
单向链表的时间复杂度
LinkedList实现原理
ArrayList和LinkedList的区别
原文地址:https://blog.csdn.net/m0_64021225/article/details/140583692
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!