您的位置:首页 > 文旅 > 美景 > 精品网站建设教程_设计网站公司价格_搜索关键词站长工具_如何做宣传推广效果最好

精品网站建设教程_设计网站公司价格_搜索关键词站长工具_如何做宣传推广效果最好

2025/3/26 0:09:45 来源:https://blog.csdn.net/qq_45638953/article/details/146388495  浏览:    关键词:精品网站建设教程_设计网站公司价格_搜索关键词站长工具_如何做宣传推广效果最好
精品网站建设教程_设计网站公司价格_搜索关键词站长工具_如何做宣传推广效果最好

📌 List 和 Set 的区别

在 Java 中,ListSet 都是 Collection 接口的子接口,但它们的存储结构、特点、使用场景不同。

对比项List(有序、可重复)Set(无序、不可重复)
是否允许重复元素✅ 允许❌ 不允许
是否有序✅ 按插入顺序排序❌ 无序(TreeSet 除外)
是否可以有 null✅ 允许多个 null✅ 只允许一个 null
底层数据结构数组、链表哈希表、红黑树
访问方式通过索引访问通过 iterator 遍历
适用场景需要顺序存储、允许重复元素需要去重、快速查找

1️⃣ List 详解

List有序且允许重复 的集合,主要实现类有:

  • ArrayList(底层是数组,查询快,增删慢)
  • LinkedList(底层是链表,增删快,查询慢)
  • Vector(线程安全,性能较低)

💡 List 使用示例

import java.util.*;public class ListExample {public static void main(String[] args) {List<String> list = new ArrayList<>();list.add("Java");list.add("Python");list.add("Java");  // ✅ 允许重复System.out.println(list);  // [Java, Python, Java]// 按索引访问System.out.println(list.get(1));  // Python}
}

📝 ArrayList vs LinkedList

对比项ArrayListLinkedList
底层结构动态数组双向链表
查询速度✅ 快(O(1))❌ 慢(O(n))
插入/删除速度❌ 慢(O(n))✅ 快(O(1) 或 O(n))
适用场景读操作多的场景增删操作多的场景

2️⃣ Set 详解

Set无序且不允许重复 的集合,主要实现类有:

  • HashSet(底层是 HashMap,无序)
  • LinkedHashSet(底层是 LinkedHashMap,有序)
  • TreeSet(底层是红黑树,自动排序)

💡 Set 使用示例

import java.util.*;public class SetExample {public static void main(String[] args) {Set<String> set = new HashSet<>();set.add("Java");set.add("Python");set.add("Java");  // ❌ 不允许重复System.out.println(set);  // 可能是 [Python, Java],但无序}
}

📝 HashSet vs TreeSet

对比项HashSetTreeSet
底层结构哈希表红黑树
是否有序❌ 无序✅ 自动排序
查询速度✅ 快(O(1))❌ 慢(O(log n))
适用场景需要快速去重需要排序的集合

3️⃣ 什么时候用 List,什么时候用 Set?

使用 List 的情况:

  • 需要 存储有序 的元素。
  • 需要 允许重复 的元素。
  • 需要 按索引访问 元素。

使用 Set 的情况:

  • 需要 去重,不允许存储相同元素。
  • 不关心存储顺序(除非用 LinkedHashSet)。
  • 需要 自动排序(使用 TreeSet)。

🎯 结论

  • List 适用于存储有序、可重复的数据,可以按索引访问。
  • Set 适用于存储无序、不可重复的数据,查询性能较优。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com