首先讲下Set的一些特性:
Set是Collecion的子接口,里面的元素不允许重复.每个具体的 Set 实现类依赖添加的对象的 equals()方法来检查独一性。Set接口没有引入新方法,所以Set就是一个Collection,只不过其行为不同。
如何界定是否是重复元素?Set最多可含一个null元素;对于任意的非null元素e1和e2,都满足e1.equals(e2)==false.
其实Set与List的最大区别就是:Set是在Map的基础上的实现
看看HashSet
public HashSet(int initialCapacity) {
map = new HashMap<E,Object>(initialCapacity);
}
public boolean add(E o) {
return map.put(o, PRESENT)==null;
}
再看看TreeSet
public TreeSet() {
this(new TreeMap<E,Object>());
}
private TreeSet(SortedMap<E,Object> m) {
this.m = m;
keySet = m.keySet();
}
这也就是Set于Map中key的特性一样的原因...
---------------------------------------------
下面介绍Set接口3种主要的实现类。
HashSet 为快速查找而设计的Set。存入HashSet的元素必须定义hashCode()。
TreeSet 保存次序的Set,底层为树结构。使用它可以从Set中提取有序的序列。元素必须实现Comparable接口。
LinkedHashSet 具有HashSet的查询速度,且内部使用链表维护元素的顺序(插入顺序)。在使用迭代器遍历Set时,结果会按插入的次序显示。元素必须定义hashCode()方法。
在查看springside原码的时候,看到domain类使用的是LinkedHashSet类
private Set<Role> roles = new LinkedHashSet<Role>(0);
在POEAA中,有这样一段话:
引用
在使用集合的时候,在面向对象语言中,通常使用数组或者列表这样的有序集合,然而,在保存到关系数据库的时候想要维持一个绝对有序的集合是非常困难的,因此,有必要考虑使用无序集来存储集合.
所以在domain中,使用Set接口,而不使用List!
在Set中,可以使用HashSet!
当要使用@OrderBy时候,可以再使用LinkedHashSet,使之有顺序.
分享到:
相关推荐
在Java编程语言中,`Collection`是所有集合框架的顶级接口,它提供了对单个对象的存储和操作。而`Set`是`Collection`的一个子接口,它代表了一组不包含重复元素的集合。本文将详细介绍`Set`接口及其主要实现类`...
### Java Collection Framework 相关知识点 #### 一、引言 在 Java 领域,《Java Collection Framework》这本书被广泛认为是一本优秀的教程,尤其适合初学者了解集合框架的前世今生。通过本书的学习,读者不仅能...
本文将深入解析Java集合中的Collection、List、Set和Map,包括它们的使用方法、实现原理以及如何进行排序。 ### 集合框架概述 1.1.1 容器简介 容器是Java集合框架的基础,它是一个可以存储多个对象的容器,提供了...
Java集合框架中的`Collection`接口是所有单值容器的基础接口,它定义了基本的增删查改元素的方法。`Collection`有两个主要的子接口:`List`和`Set`。`List`接口要求元素保持特定的顺序,并允许重复元素;而`Set`接口...
不过,从描述和标签中的“源码 工具”可以推测,作者可能在讨论Java中的集合框架,包括Collection接口、List、Set以及Map接口,这是Java开发中经常讨论的集合类型。 在Java编程中,Collection、List、Set和Map是...
本篇文章将深入解析`Collection`接口及其主要实现类`List`和`Set`,帮助你理解并熟练运用这些核心概念。 首先,`Collection`是所有单列集合的父接口,它定义了集合的基本操作,如添加元素、删除元素、检查元素存在...
Java集合Collection、List、Set、Map使用详解
Java集合框架是一个包含多种数据结构(如列表、集、队列等)的API,这些数据结构由接口(如`Collection`、`List`、`Set`和`Queue`)和实现这些接口的类(如`ArrayList`、`HashSet`和`LinkedList`)组成。`Collection...
Java集合排序及java集合类详解(Collection、List、Map、Set).doc
### Java Collection API 关键知识点详解 #### 一、线程安全集合类 在Java的Collection框架中,集合类被划分为两大类:线程安全集合类与非线程安全集合类。早期版本的集合类(如`Vector`和`Hashtable`)通过`...
如果需要存储键值对且不需要保持插入顺序,HashMap是理想之选;而如果需要避免重复元素且不在乎顺序,HashSet则是合适的选择。 了解这些集合类的特性和使用场景,对于提升Java编程的效率和代码质量至关重要。在学习...
"Java集合Collection、List、Set、Map使用详解" Java集合是Java编程语言中最基本也是最重要的一部分。能够正确地使用集合类和理解集合的实现原理对于Java程序的开发具有无比的好处。本文将详细解释Java集合的实现...
《JAVA COLLECTION》是一本专注于Java集合框架的书籍,由APress出版社出版。这本书深入浅出地探讨了Java API中的各种数据结构,是学习和理解Java集合框架的理想资源。作者通过简洁明了的语言,使得初学者也能轻松...
Set接口继承自Collection接口,其主要特性是元素的唯一性,即不允许有重复的元素。Set接口没有定义任何特定的存储行为,具体的行为由它的实现类来决定。Java提供了多种Set接口的实现,如HashSet、TreeSet和...
其中,`Collection`、`List`、`Set`和`Map`是四大基本接口,它们各自代表了一种特定的数据结构,有着不同的特性和用途。下面我们将详细探讨这些接口的区别及其相关知识点。 首先,`Collection`是所有集合类的顶级...
Java 集合框架的主要组件包括 Collection、List、Set、Map 等。 1.1 容器简介 容器是指可以存储对象的对象。 Java 集合框架中有多种类型的容器,每种容器都有其特点和用途。常见的容器有 Collection、List、Set、...
集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等。Collection 接口没有实现类,因此需要通过其子接口来实现。 Set 是一个...
Java集合框架主要包括Collection、List、Set、Map四个接口,它们分别实现了不同的数据结构。 Collection接口是Java集合框架的顶层接口,它定义了基本的集合操作,如add、remove、contains等。Collection接口有两个...