Set也是一个接口,他实现了Collection和Iterable两个接口,因此,Set是一个集合,同时,我们也可以使用迭代器遍历Set。
Set是一个接口,我们当然不能实例化接口,所以,我们一般实际使用的Set有:
- HashSet
- LinkedHashSet
- TreeSet
HashSet
HashSet存储元素的策略,是使用一中称为“散列表”的数据结构,因此,HashSet中元素的遍历是没有顺序的。而通过散列表来存储元素时,
都必须首先调用元素的hashCode方法来判断,得出的值我们叫做哈希码。当我们像HashSet存储一个元素的时候,HashSet会首先检查元素的
哈希码,如果哈希码指向的位置为空,则元素可以加进去;如果指向的位置不为空,这就说明了HashSet中有某个元素与这个元素的哈希码相同,这时候就调
用equal方法进行两个元素的比较,如果比较的结果不相同,此元素也可以加进HashSet;如果equals比较的结果还是相同,那么就不能添加此元
素。也就是说,每次添加元素都会进行hashCode方法的调用,而不一定会调用equals方法,这就大大的提高了程序的效率。同时,这也告诉我们,如
果我们自己定义的类要使用HashSet来管理对象,就一定要重写hashCode和equals方法。重写的原则就是保证相同的对象返回的哈希码是相同
的,equals返回的值是true。
使用HashSet的优点就是:查询效率特别的高,而且在增删元素的时候,效率也很高,因为是通过哈希码来实现的。
使用HashSet的缺点就是:使用的空间比较大,这是为了避免散列冲突。
LinkedHashSet
其实和HashSet差不多,就是在HashSet之前加了一个Linked,也就是说,他还是实现了元素的顺序,而不像HashSet的随机。其
实,LinkedHashSet就是HashSet的子类。与HashSet不同的就是,LinkedHashSet还有一个双重列表(即
Linked)。也就是说,我们使用Iterator遍历LinkedHashSet的时候,不再是随机的,而是按照我们添加元素的顺序。
TreeSet
TreeSet其实跟HashSet差不多,区别如下:
- 对于TreeSet的遍历,是有顺序而言的,而且这个顺序是我们可以控制的;而对HashSet遍历,则是没有顺序的。
- TreeSet增删元素的速度比HashSet慢。这一点在小数量的元素中看不错来,但是在大量的元素中,就比较明显。
刚刚说了,我们可以对于TreeSet的遍历顺序进行控制,那么是怎么控制的呢?其实,就是在我们自定义的类中实现compareTo方法。此方法
回来一个
int 类型的整数。如果返回负值,则排在后面,如果返回正值,则在前面,如果返回0,则两个元素相等,而Set是不允许有重复的元素的,所以这点也保证
了Set中元素的唯一性。
分享到:
相关推荐
Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...
List和Set是Java集合框架中两个非常重要的接口,它们提供了不同的功能和性能特点。理解它们的区别和适用场景,可以帮助我们更好地选择和使用这些集合类型。通过实际的代码示例,我们可以更深入地理解List和Set的用法...
### Java集合框架的主要接口和类全解析 #### Java集合框架概览 Java集合框架是Java标准库的一个核心组成部分,它为开发人员提供了多种用于存储和操作数据的方式。这些集合类和接口的设计旨在满足不同的需求,并...
Set:元素不可以重复,是无序。p508 Set接口中的方法和Collection一致。 |--HashSet: 内部数据结构是哈希表 ,是不同步的。 如何保证该集合的元素唯一性呢? 是通过对象的hashCode和equals方法来完成对象唯一性的...
本文将深入探讨Java集合框架中的主要接口与类,帮助读者更好地理解和应用这些工具。 #### 集合框架概述 Java集合框架主要包括四种类型的集合:List、Set、Queue和Map。每种集合都有其独特的特性和应用场景。 - **...
本文深入探讨了 Java 集合框架中的 List、Set 和 Map 三种集合类型,包括它们的特点、实现以及使用示例。通过对比分析,明确了它们之间的区别和适用场景。希望本文能够帮助你在实际开发中更好地利用 Java 集合框架,...
该文档主要详细总结了Java集合的相关知识,包括Collection和Map接口、Collection接口的子接口List和Set接口以及具体的实现类、存储原理等;Map接口的子接口HashMap、LinkedHashMap、TreeMap、Properties等
在这个“java集合框架的使用”主题中,我们将深入探讨如何利用Java集合框架进行基本的集合运算,包括散列集合、求子集以及集合的交和并。 首先,我们要理解Java集合框架的基本层次结构。它主要包括接口(如List、...
在Java集合框架中,`Collection`是所有单值集合的父接口,它包含了`List`、`Set`等子接口。而`Iterable`接口是集合可迭代的标志,通过`iterator()`方法获取迭代器,遍历集合中的元素。`Map`接口则是用于存储键值对的...
Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构允许程序员以高效的方式处理大量数据。 ##### 1.1 容器简介 容器是Java集合框架的基础概念,它们用于存储对象的集合。容器分为...
Java 集合框架的组成部分包括 Collection、List、Set、Map 等接口,ArrayList、LinkedList、HashSet、HashMap 等实现,和各种算法,如查找、排序等。这些组成部分可以帮助程序员更方便地使用集合,提高程序的速度和...
java集合类list-set-map.doc
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组接口和类,使得开发者能够方便地管理和操作数据。本章重点讲述了Set接口及其相关的实现类,List接口及其实现类,以及Map接口及其实现类的使用。 ...
深入的洞察到Java集合框架的核心组件:Map, List, 和 Set。首先,深入分析了HashMap的内部结构,包括它的数组+链表+红黑树的数据结构。重要的是理解如何处理并发问题,特别是在Java 8中对HashMap的优化,如高低位...
Java 集合类 List、Set 和 Map 是 Java 语言中最基本的集合类,它们之间存在着紧密的联系和区别。在本文中,我们将对 Java 集合类 List、Set 和 Map 的区别和联系进行详细的介绍。 一、Array、Arrays 和 Collection...
Java集合框架中的Set接口是Java编程中不可或缺的一部分,主要用于存储不允许重复的元素。Set接口继承了Collection接口,因此它具备了Collection接口的所有基本操作。同时,Set接口还提供了特有的方法,如添加元素、...
Java集合框架是Java编程语言中一个非常重要的组成部分,它提供了一组高级的数据结构,使得开发者能够更方便地管理和操作对象。在本次实验中,我们主要关注了三个主要的集合接口:Set、List和Map,以及它们的一些常见...
Java集合主要分为两大类:List(列表)和Set(集)。List是一个有序的集合,允许元素重复,并且可以保持插入时的顺序;而Set则不允许元素重复,它强调的是元素的唯一性。 1. List接口:List接口中最常见的实现类有...
Java集合框架提供了一套强大的工具集,用于高效地管理和操作对象集合。理解这些接口和实现类之间的关系对于编写高质量、可维护的Java程序至关重要。通过合理选择和利用这些集合类型,开发者可以更好地满足应用程序的...
Java集合框架是Java编程语言中的一个核心部分,它为数据存储和管理提供了高效且灵活的解决方案。本思维导图及总结旨在深入理解并掌握Java集合的相关概念和使用方法。 首先,我们来了解一下Java集合框架的基本构成。...