`

java.util包中 Set 和 List 的区别

    博客分类:
  • JAVA
阅读更多

对于Set 和 List都是 接口 Collection 的子接口 

1、Set 不允许重复,List允许重复 
2、Set 没有顺序,List有顺序 

另外:对于List当中,有没有重复元素的判断:是依据元素的 equals方法判断是否相等的。 
对于排序来说,是根据元素实现了Comparable接口compareTo()方法来排序的。

 

Collection List Set Map 区别记忆

 

这些都代表了Java中的集合,这里主要从其元素是否有序,是否可重复来进行区别记忆,以便恰当地使用,当然还存在同步方面的差异,见上一篇相关文章。
 
 
有序否
允许元素重复否
Collection
List
Set
AbstractSet
HashSet
TreeSet
是(用二叉树排序)
Map
AbstractMap
使用key-value来映射和存储数据,Key必须惟一,value可以重复
HashMap
TreeMap
是(用二叉树排序)
 
 

 
List接口对Collection进行了简单的扩充,它的具体实现类常用的有ArrayList和LinkedList。你可以将任何东西放到一个List容器中,并在需要时从中取出。ArrayList从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快,而LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。在具体应用时可以根据需要自由选择。前面说的Iterator只能对容器进行向前遍历,而ListIterator则继承了Iterator的思想,并提供了对List进行双向遍历的方法。 

Set接口也是Collection的一种扩展,而与List不同的时,在Set中的对象元素不能重复,也就是说你不能把同样的东西两次放入同一个Set容器中。它的常用具体实现有HashSet和TreeSet类。HashSet能快速定位一个元素,但是你放到HashSet中的对象需要实现hashCode()方法,它使用了前面说过的哈希码的算法。而TreeSet则将放入其中的元素按序存放,这就要求你放入其中的对象是可排序的,这就用到了集合框架提供的另外两个实用类Comparable和Comparator。一个类是可排序的,它就应该实现Comparable接口。有时多个类具有相同的排序算法,那就不需要在每分别重复定义相同的排序算法,只要实现Comparator接口即可。集合框架中还有两个很实用的公用类:Collections和Arrays。Collections提供了对一个Collection容器进行诸如排序、复制、查找和填充等一些非常有用的方法,Arrays则是对一个数组进行类似的操作。 


Map是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求。你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。Map有两种比较常用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(),lastKey()等,你还可以从TreeMap中指定一个范围以取得其子Map。键和值的关联很简单,用pub(Object key,Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。

分享到:
评论

相关推荐

    java.util包

    下面将详细阐述java.util包中的主要类和接口及其用途。 1. 集合框架:Java.util包是Java集合框架的基础,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。这些集合类为...

    java.util包总结

    Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强...通过熟练掌握和使用java.util包中的类和接口,开发者能够更加高效地处理数据和实现复杂逻辑。

    JBuider第七章:Java.util包.rar

    本教程重点讲解了Java.util包中的主要组件和使用方法,旨在帮助初学者深入理解并熟练运用这个包。 1. **集合框架**: Java.util包是Java集合框架的基础,包括List、Set、Queue等接口以及ArrayList、LinkedList、...

    Java.util随记.doc

    Java.util包是Java标准库中...总的来说,`Java.util`包中的`Iterator`和`List`接口为开发者提供了灵活且高效的数据操作手段,是日常开发中不可或缺的部分。理解并熟练运用这些接口,可以极大地提高代码的可读性和效率。

    java的.awt包和java.util包的区别

    ### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...

    Java语言的Util类详细介绍

    Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。 Collection接口的实现类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,...

    java.util源码-java-util:javautil源代码

    1. **集合框架**:Java的集合框架是`java.util`包的核心部分,包括List、Set、Queue和Map接口,以及它们的实现类。例如: - `ArrayList` 和 `LinkedList`:这两个类分别实现了List接口,它们分别基于动态数组和双向...

    java-util-1.3.1.jar.zip

    1. **集合框架扩展**:可能包含对Java内置集合类(如List、Set、Map)的增强,提供更高效的操作,例如快速排序、线程安全的实现等。 2. **日期和时间处理**:提供更加灵活和强大的日期时间操作,弥补Java 8之前的...

    java 参考手册 (.chm)

    10. **集合框架**:`java.util`包中的`List`、`Set`、`Map`等接口以及它们的实现类,如`ArrayList`、`HashSet`、`HashMap`,构成了Java强大的集合框架,用于存储和操作对象。 Java参考手册是每个Java开发者不可或缺...

    Java6 API 中文

    2. **集合框架**:在Java 6中,集合框架是一个重要的部分,它提供了多种数据结构,如列表(List)、队列(Queue)、集(Set)和映射(Map)。`java.util.ArrayList`和`java.util.LinkedList`是两种常见的列表实现,...

    JAVA核心知识点整理.zip

    集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。 Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 Iterator:迭代器,可以通过迭代器遍历集合中的...

    java.util源码-JavaUtility-SourceCode:JavaUtility-SourceCode

    9. 泛型:`java.util`包中的许多类和接口都使用了泛型,以提高类型安全性和代码可读性。 10. 动态代理:`Proxy`类和`InvocationHandler`接口用于创建动态代理,可以用来实现接口的动态方法调用。 理解`java.util`...

    Java高级程序设计:第7章-集合框架.pptx

    java.util包中定义了各种用于集合操作的类和接口,这些类和接口构成了Java语言的集合框架(Collection Framework)。 Java集合中可以放对象,不能存放基础数据类型数。 Collection Framework 根据不同类型的集合的特点...

    java常用工具类

    7. **`java.util.HashSet` 和 `java.util.TreeSet`**:这两个类实现了Set接口,`HashSet`基于哈希表,`TreeSet`基于红黑树,它们的区别在于元素的存储方式和排序特性。 8. **`java.util.Scanner`**:用于从输入流...

    javaAPI1.6

    `java.util.Set`和`java.util.List`接口以及它们的实现类如`HashSet`、`LinkedList`和`ArrayList`,为数据存储提供了多种选择。 3. **多线程支持**:Java API 1.6在`java.lang.Thread`和`java.util.concurrent`包中...

    java工具类 java开发助手 java util

    1. 集合框架:Java中的集合框架是`java.util`包的核心,包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。它们提供了存储和操作对象的基本功能,支持动态扩展和多种操作,如...

    Java util

    在Java的util包中,我们可以找到许多用于处理集合、日期时间、随机数、比较、IO流、泛型以及并发等任务的工具类。 1. **集合框架**: - `ArrayList`和`LinkedList`:这两种都是`List`接口的实现,分别基于动态数组...

    JAVA的API,仅供参考

    2. **集合框架**:Java 1.8的集合框架在`java.util`包中,包括List、Set、Map等接口,以及ArrayList、HashSet、HashMap等实现。接口`java.util.stream.Stream`的引入,使得集合操作更加强大,支持函数式编程风格。 ...

Global site tag (gtag.js) - Google Analytics