贝斯特365-365提前结束投注-365bet中国客服电话

Java 集合框架 基础 总结 - lenyan

Java 集合框架 基础 总结 - lenyan

目录

✨探索Java 集合框架 基础 总结✨

一、集合框架概述

二、List 接口

ArrayList

LinkedList

Vector

三、Set 接口

HashSet

LinkedHashSet

TreeSet

四、Map 接口

HashMap

LinkedHashMap

TreeMap

五、常用方法总结

Collection 接口

List 接口

Set 接口

Map 接口

六、总结

✨探索Java 集合框架 基础 总结✨

在 Java 编程中,集合框架是一个非常重要的部分,它提供了一组用于存储、操作和处理数据的类和接口。集合框架可以大大简化我们处理数据集合的工作,提高编程效率和代码质量。本文将对 Java 集合框架的基础内容进行总结,包括常见的集合类型、接口及其特点、常用方法等。

一、集合框架概述

Java 集合框架位于java.util包中,它主要包含了三大类接口:Collection、Map和Iterator。Collection是一个用来存储一组对象的接口,它有几个重要的子接口,如List、Set和Queue。Map则是用于存储键值对的数据结构。Iterator是一个用于遍历集合元素的接口。

集合框架的设计遵循了一些通用的原则,如提供了统一的操作方法、方便的遍历方式以及不同集合类型之间的转换等,使得开发者可以根据具体的需求选择合适的集合类型来处理数据。

二、List 接口

List是一个有序的集合,可以包含重复元素。它的主要实现类有ArrayList、LinkedList和Vector。

ArrayList

特点:基于数组实现,具有快速随机访问的能力。查询操作效率高,时间复杂度为 O(1)。但在插入和删除元素时,尤其是在中间位置进行操作时,可能需要移动大量元素,效率相对较低,时间复杂度为 O(n)。

示例代码:

import java.util.ArrayList;

import java.util.List;

public class ArrayListExample {

public static void main(String[] args) {

List arrayList = new ArrayList<>();

// 添加元素

arrayList.add("Apple");

arrayList.add("Banana");

arrayList.add("Cherry");

// 访问元素

System.out.println(arrayList.get(1));

// 修改元素

arrayList.set(0, "Apricot");

// 删除元素

arrayList.remove(2);

// 遍历列表

for (String fruit : arrayList) {

System.out.println(fruit);

}

}

}

LinkedList

特点:基于双向链表实现,插入和删除操作在首尾两端效率较高,时间复杂度为 O(1)。但随机访问元素的效率较低,需要从头节点或尾节点开始遍历,时间复杂度为 O(n)。

示例代码:

import java.util.LinkedList;

import java.util.List;

public class LinkedListExample {

public static void main(String[] args) {

List linkedList = new LinkedList<>();

linkedList.add("Dog");

linkedList.add("Cat");

linkedList.add("Elephant");

// 在头部插入元素

((LinkedList) linkedList).addFirst("Mouse");

// 在尾部插入元素

((LinkedList) linkedList).addLast("Lion");

// 删除头部元素

((LinkedList) linkedList).removeFirst();

// 删除尾部元素

((LinkedList) linkedList).removeLast();

// 遍历链表

for (String animal : linkedList) {

System.out.println(animal);

}

}

}

Vector

特点:类似于ArrayList,也是基于数组实现,但它是线程安全的。在多线程环境下可以使用,但由于同步机制的存在,性能相对较低。在单线程环境下,一般不建议使用Vector,而优先选择ArrayList。

三、Set 接口

Set是一个不包含重复元素的集合,它的主要实现类有HashSet、LinkedHashSet和TreeSet。

HashSet

特点:基于哈希表实现,添加、删除和查找元素的效率都比较高,时间复杂度接近 O(1)。它不保证元素的顺序,因为元素是根据哈希值存储在哈希表中的。

示例代码:

import java.util.HashSet;

import java.util.Set;

public class HashSetExample {

public static void main(String[] args) {

Set hashSet = new HashSet<>();

hashSet.add(5);

hashSet.add(3);

hashSet.add(7);

hashSet.add(5); // 重复元素不会被添加

// 检查元素是否存在

System.out.println(hashSet.contains(3));

// 遍历集合

for (Integer num : hashSet) {

System.out.println(num);

}

}

}

LinkedHashSet

特点:继承自HashSet,在哈希表的基础上维护了一个双向链表,以保证元素的插入顺序。遍历LinkedHashSet时,元素将按照添加的顺序输出。

示例代码:

import java.util.LinkedHashSet;

import java.util.Set;

public class LinkedHashSetExample {

public static void main(String[] args) {

Set linkedHashSet = new LinkedHashSet<>();

linkedHashSet.add("Red");

linkedHashSet.add("Green");

linkedHashSet.add("Blue");

linkedHashSet.add("Yellow");

// 遍历集合,元素按添加顺序输出

for (String color : linkedHashSet) {

System.out.println(color);

}

}

}

TreeSet

特点:基于红黑树实现,它可以对元素进行自然排序或者根据自定义的比较器进行排序。TreeSet中的元素是有序的,因此在需要对元素进行排序的场景中非常有用。添加、删除和查找元素的时间复杂度为 O(log n)。

示例代码:

import java.util.Set;

import java.util.TreeSet;

public class TreeSetExample {

public static void main(String[] args) {

Set treeSet = new TreeSet<>();

treeSet.add(8);

treeSet.add(2);

treeSet.add(6);

treeSet.add(4);

// 遍历有序集合

for (Integer num : treeSet) {

System.out.println(num);

}

}

}

四、Map 接口

Map用于存储键值对,每个键在Map中是唯一的。它的主要实现类有HashMap、LinkedHashMap和TreeMap。

HashMap

特点:基于哈希表实现,提供了快速的插入、删除和查找操作,时间复杂度接近 O(1)。它不保证键值对的顺序。

示例代码:

import java.util.HashMap;

import java.util.Map;

public class HashMapExample {

public static void main(String[] args) {

Map hashMap = new HashMap<>();

hashMap.put("Apple", 5);

hashMap.put("Banana", 3);

hashMap.put("Cherry", 7);

// 根据键获取值

System.out.println(hashMap.get("Banana"));

// 检查键是否存在

System.out.println(hashMap.containsKey("Apple"));

// 遍历 Map

for (Map.Entry entry : hashMap.entrySet()) {

System.out.println(entry.getKey() + " : " + entry.getValue());

}

}

}

LinkedHashMap

特点:继承自HashMap,在哈希表的基础上维护了一个双向链表,以保证键值对的插入顺序。遍历LinkedHashMap时,键值对将按照添加的顺序输出。

示例代码:

import java.util.LinkedHashMap;

import java.util.Map;

public class LinkedHashMapExample {

public static void main(String[] args) {

Map linkedHashMap = new LinkedHashMap<>();

linkedHashMap.put("One", "First");

linkedHashMap.put("Two", "Second");

linkedHashMap.put("Three", "Third");

// 遍历有序的 Map

for (Map.Entry entry : linkedHashMap.entrySet()) {

System.out.println(entry.getKey() + " - " + entry.getValue());

}

}

}

TreeMap

特点:基于红黑树实现,它可以根据键的自然顺序或者自定义的比较器对键值对进行排序。遍历TreeMap时,键值对将按照键的顺序输出。

示例代码:

import java.util.Map;

import java.util.TreeMap;

public class TreeMapExample {

public static void main(String[] args) {

Map treeMap = new TreeMap<>();

treeMap.put(3, "Three");

treeMap.put(1, "One");

treeMap.put(2, "Two");

// 遍历有序的 TreeMap

for (Map.Entry entry : treeMap.entrySet()) {

System.out.println(entry.getKey() + " => " + entry.getValue());

}

}

}

五、常用方法总结

以下是一些集合框架中常用的方法:

Collection 接口

add(E e):向集合中添加一个元素。

addAll(Collection c):将指定集合中的所有元素添加到当前集合中。

remove(Object o):从集合中移除指定元素。

removeAll(Collection c):移除当前集合中与指定集合中相同的所有元素。

contains(Object o):检查集合是否包含指定元素。

size():返回集合中元素的数量。

isEmpty():判断集合是否为空。

iterator():返回一个迭代器,用于遍历集合元素。

List 接口

除了继承自Collection接口的方法外,还有:

get(int index):获取指定索引位置的元素。

set(int index, E element):修改指定索引位置的元素。

add(int index, E element):在指定索引位置插入一个元素。

remove(int index):移除指定索引位置的元素。

Set 接口

主要使用继承自Collection接口的方法,由于Set不允许重复元素,所以添加重复元素时会被忽略。

Map 接口

put(K key, V value):向Map中添加一个键值对,如果键已存在,则覆盖对应的值。

get(Object key):根据键获取对应的值。

containsKey(Object key):检查Map是否包含指定的键。

containsValue(Object value):检查Map是否包含指定的值。

keySet():返回Map中所有键的集合。

values():返回Map中所有值的集合。

entrySet():返回Map中所有键值对的集合,每个键值对是一个Map.Entry对象。

六、总结

Java 集合框架为我们提供了丰富的工具来处理各种数据集合。在实际编程中,我们需要根据具体的需求选择合适的集合类型。

例如:

如果需要有序且可重复的集合,可以选择List;

如果需要无序且不重复的集合,可以选择Set;

如果需要存储键值对,可以选择Map。

同时,我们还需要了解不同集合实现类的特点和性能,以便在不同的场景下做出最优的选择,从而提高程序的效率和可读性。通过熟练掌握 Java 集合框架的基础知识,我们能够更好地处理数据集合相关的编程任务,为开发复杂的应用程序打下坚实的基础。

希望这篇博客能够帮助你对 Java 集合框架的基础内容有一个清晰的理解和认识。在学习和使用过程中,不断实践和探索,你将能够更加深入地掌握集合框架的精髓。

觉得有用的话可以点点赞 (*/ω\*),支持一下。

如果愿意的话关注一下。会对你有更多的帮助。

每天都会不定时更新哦 >人< 。

相关推荐