Java 集合:单列集合和双列集合的深度分析

打印 上一主题 下一主题

主题 969|帖子 969|积分 2922

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
引言

        在 Java 编程中,集合是一个非常紧张的概念。它就像是一个容器,能够存储多个数据元素,资助我们更方便地管理和操作数据。Java 集合框架重要分为单列集合和双列集合两大类,它们各自有着独特的特点和适用场景。接下来,让我们深入探究这两种集合。
单列集合

单列集合就像是一列整齐分列的数据队伍,每个元素都是独立的个体,按照一定的规则存储和组织。在 Java 中,单列集合的根接口是 java.util.Collection,它派生了多个子接口和实现类。
1. List 接口

List 接口的特点是元素有序且可重复。这意味着我们可以通过索引来访问集合中的元素,就像在书架上按照编号查找册本一样。常见的 List 实现类有 ArrayList 和 LinkedList。
ArrayList

ArrayList 基于数组实现,它在内存中是连续存储的。这使得它在随机访问元素时非常高效,就像在一本装订好的书中快速翻到指定页码一样。以下是一个简单的示例:
  1. import java.util.ArrayList;
  2. import java.util.List;
  3. public class ArrayListExample {
  4.     public static void main(String[] args) {
  5.         List<String> list = new ArrayList<>();
  6.         list.add("apple");
  7.         list.add("banana");
  8.         list.add("cherry");
  9.         System.out.println(list.get(1)); // 输出: banana
  10.     }
  11. }
复制代码

不过,ArrayList 在插入和删除元素时大概会比力低效,因为需要移动后续的元素。
LinkedList

LinkedList 基于链表实现,元素之间通过引用相互连接。这使得它在插入和删除元素时非常高效,就像在一列火车中添加或移除车厢一样。但随机访问元素时服从较低,因为需要从头开始遍历链表。示例如下:
  1. import java.util.LinkedList;
  2. import java.util.List;
  3. public class LinkedListExample {
  4.     public static void main(String[] args) {
  5.         List<String> list = new LinkedList<>();
  6.         list.add("apple");
  7.         list.add("banana");
  8.         list.add("cherry");
  9.         list.add(1, "date");
  10.         System.out.println(list); // 输出: [apple, date, banana, cherry]
  11.     }
  12. }
复制代码
2. Set 接口

Set 接口的特点是元素无序且不可重复。这就好比一个装满差别颜色气球的袋子,每个气球都是独一无二的,而且没有固定的分列顺序。常见的 Set 实现类有 HashSet 和 TreeSet。
HashSet

HashSet 基于哈希表实现,它通过哈希值来存储和查找元素。这使得它在添加、删除和查找元素时具有较高的服从。示例如下:
  1. import java.util.HashSet;
  2. import java.util.Set;
  3. public class HashSetExample {
  4.     public static void main(String[] args) {
  5.         Set<String> set = new HashSet<>();
  6.         set.add("apple");
  7.         set.add("banana");
  8.         set.add("apple"); // 重复元素,不会被添加
  9.         System.out.println(set); // 输出: [apple, banana]
  10.     }
  11. }
复制代码
TreeSet

TreeSet 基于红黑树实现,它可以对元素进行排序。这就像一个按照字母顺序分列的字典,方便我们查找和比力元素。示例如下:
  1. import java.util.TreeSet;
  2. import java.util.Set;
  3. public class TreeSetExample {
  4.     public static void main(String[] args) {
  5.         Set<Integer> set = new TreeSet<>();
  6.         set.add(3);
  7.         set.add(1);
  8.         set.add(2);
  9.         System.out.println(set); // 输出: [1, 2, 3]
  10.     }
  11. }
复制代码
双列集合

双列集合就像是一个表格,每一行都包含两个部分:键(Key)和值(Value)。键是唯一的,就像表格的索引,通过键可以快速找到对应的值。在 Java 中,双列集合的根接口是 java.util.Map。
1. HashMap

HashMap 基于哈希表实现,它通过键的哈希值来存储和查找元素。这使得它在添加、删除和查找元素时具有较高的服从。示例如下:
  1. import java.util.HashMap;
  2. import java.util.Map;
  3. public class HashMapExample {
  4.     public static void main(String[] args) {
  5.         Map<String, Integer> map = new HashMap<>();
  6.         map.put("apple", 1);
  7.         map.put("banana", 2);
  8.         map.put("cherry", 3);
  9.         System.out.println(map.get("banana")); // 输出: 2
  10.     }
  11. }
复制代码

需要注意的是,HashMap 不包管元素的顺序。
2. TreeMap

TreeMap 基于红黑树实现,它可以根据键的天然顺序或指定的比力器对元素进行排序。这就像一个按照字母顺序分列的电话簿,方便我们查找和比力元素。示例如下:
  1. import java.util.TreeMap;
  2. import java.util.Map;
  3. public class TreeMapExample {
  4.     public static void main(String[] args) {
  5.         Map<String, Integer> map = new TreeMap<>();
  6.         map.put("banana", 2);
  7.         map.put("apple", 1);
  8.         map.put("cherry", 3);
  9.         System.out.println(map); // 输出: {apple=1, banana=2, cherry=3}
  10.     }
  11. }
复制代码
3. LinkedHashMap


LinkedHashMap 是 HashMap 的子类,它不但具有 HashMap 的高效性,还能保持元素的插入顺序。示例如下:
  1. import java.util.LinkedHashMap;
  2. import java.util.Map;
  3. public class LinkedHashMapExample {
  4.     public static void main(String[] args) {
  5.         Map<String, Integer> map = new LinkedHashMap<>();
  6.         map.put("banana", 2);
  7.         map.put("apple", 1);
  8.         map.put("cherry", 3);
  9.         System.out.println(map); // 输出: {banana=2, apple=1, cherry=3}
  10.     }
  11. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

大连全瓷种植牙齿制作中心

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表