Java-集合

Java 集合框架提供了丰富的接口和实现,用于存储、检索和操作对象。集合主要分为 Collection 和 Map 两个体系,每个体系下有多个子接口和实现。以下是每种主要集合的详细介绍,包括特性、方法介绍和使用示例,以及它们的常见实现类。
在这里插入图片描述

1. Collection 接口

1.1 List 接口
  • 特性: 有序集合,允许重复元素。

  • 实现类: ArrayListLinkedListVector

  • 方法介绍:

    • add(E element): 在集合尾部添加元素。
    • get(int index): 获取指定位置的元素。
    • set(int index, E element): 替换指定位置的元素。
    • remove(Object element): 移除指定元素。
    • size(): 返回集合中的元素个数。
  • 使用示例:

    List<String> list = new ArrayList<>();
    list.add("Java");
    list.add("Python");
    list.add("C++");
    
    String element = list.get(0);
    list.set(1, "JavaScript");
    list.remove("C++");
    
    for (String language : list) {
        System.out.println(language);
    }
    
1.2 Set 接口
  • 特性: 无序集合,不允许重复元素。

  • 实现类: HashSetLinkedHashSetTreeSet

  • 方法介绍:

    • add(E element): 向集合添加元素。
    • contains(Object element): 判断是否包含指定元素。
    • remove(Object element): 移除指定元素。
    • size(): 返回集合中的元素个数。
  • 使用示例:

    Set<String> set = new HashSet<>();
    set.add("Apple");
    set.add("Banana");
    set.add("Orange");
    
    boolean containsOrange = set.contains("Orange");
    set.remove("Banana");
    
    for (String fruit : set) {
        System.out.println(fruit);
    }
    
1.3 Queue 接口
  • 特性: 队列,用于存储和处理元素的先进先出(FIFO)顺序。

  • 实现类: LinkedListPriorityQueue

  • 方法介绍:

    • offer(E element): 将元素添加到队列。
    • poll(): 获取并删除队首元素。
    • peek(): 获取队首元素但不删除。
    • size(): 返回队列中的元素个数。
  • 使用示例:

    Queue<String> queue = new LinkedList<>();
    queue.offer("One");
    queue.offer("Two");
    queue.offer("Three");
    
    String element = queue.poll();
    String peekElement = queue.peek();
    

2. Map 接口

2.1 HashMap
  • 特性: 无序键值对集合,允许键和值为 null。

  • 实现类: HashMap

  • 方法介绍:

    • put(K key, V value): 将键值对添加到 Map。
    • get(Object key): 根据键获取值。
    • containsKey(Object key): 判断是否包含指定键。
    • remove(Object key): 移除指定键值对。
    • size(): 返回 Map 中的键值对个数。
  • 使用示例:

    Map<String, Integer> map = new HashMap<>();
    map.put("Java", 1);
    map.put("Python", 2);
    map.put("C++", 3);
    
    int javaRank = map.get("Java");
    boolean containsKey = map.containsKey("Python");
    map.remove("C++");
    
    for (Map.Entry<String, Integer> entry : map.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    
2.2 LinkedHashMap
  • 特性: 有序键值对集合,按插入顺序或访问顺序排序,允许键和值为 null。

  • 实现类: LinkedHashMap

  • 方法介绍:

    • put(K key, V value): 将键值对添加到 Map。
    • get(Object key): 根据键获取值。
    • containsKey(Object key): 判断是否包含指定键。
    • remove(Object key): 移除指定键值对。
    • size(): 返回 Map 中的键值对个数。
  • 使用示例:

  Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
  linkedHashMap.put("Monday", 1);
  linkedHashMap.put("Tuesday", 2);
  linkedHashMap.put("Wednesday", 3);

  int tuesdayValue = linkedHashMap.get("Tuesday");
  linkedHashMap.remove("Wednesday");

  for (Map.Entry<String, Integer> entry : linkedHashMap.entrySet()) {
      System

.out.println(entry.getKey() + ": " + entry.getValue());
  }
2.3 TreeMap
  • 特性: 有序键值对集合,按照键的自然顺序或自定义顺序排序,不允许键为 null。

  • 实现类: TreeMap

  • 方法介绍:

    • put(K key, V value): 将键值对添加到 Map。
    • get(Object key): 根据键获取值。
    • containsKey(Object key): 判断是否包含指定键。
    • remove(Object key): 移除指定键值对。
    • size(): 返回 Map 中的键值对个数。
  • 使用示例:

    Map<String, Integer> treeMap = new TreeMap<>();
    treeMap.put("Zebra", 5);
    treeMap.put("Lion", 3);
    treeMap.put("Elephant", 8);
    
    int lionValue = treeMap.get("Lion");
    treeMap.remove("Zebra");
    
    for (Map.Entry<String, Integer> entry : treeMap.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
    

3. Collections 工具类

3.1 排序
  • 方法介绍:

    List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6, 5);
    Collections.sort(numbers);  // 默认升序排序
    
3.2 随机化
  • 方法介绍:

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    Collections.shuffle(numbers);  // 随机打乱元素顺序
    
3.3 查找
  • 方法介绍:

    List<String> words = Arrays.asList("apple", "banana", "cherry");
    int index = Collections.binarySearch(words, "banana");  // 二分查找
    
3.4 反转
  • 方法介绍:

    List<Character> chars = Arrays.asList('a', 'b', 'c', 'd');
    Collections.reverse(chars);  // 反转元素顺序
    
3.5 替换和填充
  • 方法介绍:

    List<String> letters = new ArrayList<>(Arrays.asList("a", "b", "c", "d"));
    Collections.replaceAll(letters, "a", "z");  // 替换指定元素
    Collections.fill(letters, "x");  // 使用指定元素填充集合
    

4. 总结

  • List: 有序集合,允许重复元素。常见实现有 ArrayListLinkedListVector

  • Set: 无序集合,不允许重复元素。常见实现有 HashSetLinkedHashSetTreeSet

  • Queue: 队列,用于存储和处理元素的先进先出(FIFO)顺序。常见实现有 LinkedListPriorityQueue

  • Map: 键值对集合,键唯一。常见实现有 HashMapLinkedHashMapTreeMap

  • Collections 工具类: 提供了对集合的各种操作,如排序、随机化、查找、反转、替换和填充等。

  • 54
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

[猫玖]

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值