「java常见的集合类」Java的集合类

博主:adminadmin 2022-12-02 17:57:08 69

今天给各位分享java常见的集合类的知识,其中也会对Java的集合类进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

java有哪些集合

Java集合主要有四种,分别为:List列表、Queue队列、Set集合、Map映射。

List列表:有序的,可重复的;

Queue队列:有序,可重复的;

Set集合:不可重复;

Map映射:无序,键唯一,值不唯一。

在Java中,什么是集合类,跟普通类有什么区别?

简单的说,集合类有list列,set集和map映射 三大类!\x0d\x0a\x0d\x0aSet(集):集合中的对象无排列顺序,并且没有重复的对象.\x0d\x0a\x0d\x0aList(队列):集合中的对象按照索引的顺序排列,可以有重复的对象。\x0d\x0a\x0d\x0aMap(映射):集合中的每一个元素都是一对一对的,包括一个key对象,一个Value对象(一个Key指向一个Value).集合中没有重复的key对象,但是vaulue对象可以重复.\x0d\x0a集合类是进行集合操作的。

JAVA的集合类型有哪些

Java API中所用的集合类,都是实现了Collection接口,他的一个类继承结构如下:

Collection--List--Vector

Collection--List--ArrayList

Collection--List--LinkedList

Collection--Set--HashSet

Collection--Set--HashSet--LinkedHashSet

Collection--Set--SortedSet--TreeSet

Vector : 基于Array的List,其实就是封装了Array所不具备的一些功能方便我们使用,它不可能走入Array的限制。性能也就不可能

超越Array。所以,在可能的情况下,我们要多运用Array。另外很重要的一点就是Vector“sychronized”的,这个也是Vector和

ArrayList的唯一的区别。

ArrayList:同Vector一样是一个基于Array上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector优越一些,但

是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

LinkedList:LinkedList不同于前面两种List,它不是基于Array的,所以不受Array性能的限制。它每一个节点(Node)都包含两方

面的内容:1.节点本身的数据(data);2.下一个节点的信息(nextNode)。所以当对LinkedList做添加,删除动作的时候就不用像

基于Array的List一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了。这就是LinkedList的优势。

List总结:

1. 所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ];

2. 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ];

3. 所有的List中可以有null元素,例如[ tom,null,1 ];

4. 基于Array的List(Vector,ArrayList)适合查询,而LinkedList(链表)适合添加,删除操作。

HashSet:虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是

在HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。

北大青鸟java培训:Java集合框架的知识总结?

说明:先从整体介绍了Java集合框架包含的接口和类,然后河北IT培训总结了集合框架中的一些基本知识和关键点,并结合实例进行简单分析。

1、综述    所有集合类都位于java.util包下。

集合中只能保存对象(保存对象的引用变量)。

(数组既可以保存基本类型的数据也可以保存对象)。

    当我们把一个对象放入集合中后,系统会把所有集合元素都当成Object类的实例进行处理。

从JDK1.5以后,这种状态得到了改进:可以使用泛型来限制集合里元素的类型,并让集合记住所有集合元素的类型(参见具体泛型的内容)。

  Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些接口或实现类。

Set、List和Map可以看做集合的三大类。

   List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。

   Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是不能集合里元素不允许重复的原因)。

   Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。

对于Set、List和Map三种集合,最常用的实现类分别是HashSet、ArrayList和HashMap三个实现类。

(并发控制的集合类,以后有空研究下)。

2、Collection接口   Collection接口是List、Set和Queue接口的父接口,同时可以操作这三个接口。

Collection接口定义操作集合元素的具体方法大家可以参考API文档,这里通过一个例子来说明Collection的添加元素、删除元素、返回集合中元素的个数以及清空集合元素的方法。

3、两种遍历集合的方法Iterator接口和foreach循环  1、Iterator接口Iterator也是Java集合框架的成员,主要用于遍历(即迭代访问)Collection集合中的元素,也称为迭代器。

北大青鸟java培训:Java中最常用的集合类框架?

一、HashMap的概述    HashMap可以说是Java中最常用的集合类框架之一,是Java语言中非常典型的数据结构。

   HashMap是基于哈希表的Map接口实现的,此实现提供所有可选的映射操作。

甘肃电脑培训发现存储的是对的映射,允许多个null值和一个null键。

但此类不保证映射的顺序,特别是它不保证该顺序恒久不变。

 除了HashMap是非同步以及允许使用null外,HashMap类与Hashtable大致相同。

此实现假定哈希函数将元素适当地分布在各桶之间,可为基本操作(get和put)提供稳定的性能。

迭代collection视图所需的时间与HashMap实例的“容量”(桶的数量)及其大小(键-值映射关系数)成比例。

所以,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

HashMap的实例有两个参数影响其性能:初始容量和加载因子。

容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。

加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度。

当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行rehash操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。

    通常,默认加载因子(0.75)在时间和空间成本上寻求一种折衷。

加载因子过高虽然减少了空间开销,但同时也增加了查询成本(在大多数HashMap类的操作中,包括get和put操作,都反映了这一点)。

在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少rehash操作次数。

如果初始容量大于最大条目数除以加载因子,则不会发生rehash操作。

注意,此实现不是同步的。

如果多个线程同时访问一个HashMap实例,而其中至少一个线程从结构上修改了列表,那么它必须保持外部同步。

这通常是通过同步那些用来封装列表的对象来实现的。

但如果没有这样的对象存在,则应该使用{@linkCollections#synchronizedMapCollections.synchronizedMap}来进行“包装”,该方法最好是在创建时完成,为了避免对映射进行意外的非同步操作。

Mapm=Collections.synchronizedMap(newHashMap(...));  二、构造函数HashMap提供了三个构造函数:HashMap():构造一个具有默认初始容量(16)和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity):构造一个带指定初始容量和默认加载因子(0.75)的空HashMap。

HashMap(intinitialCapacity,floatloadFactor):构造一个带指定初始容量和加载因子的空HashMap。

这里提到了两个参数:初始容量,加载因子。

这两个参数是影响HashMap性能的重要参数,其中容量表示哈希表中桶的数量,初始容量是创建哈希表时的容量,加载因子是哈希表在其容量自动增加之前可以达到多满的一种尺度,它衡量的是一个散列表的空间的使用程度,负载因子越大表示散列表的装填程度越高,反之愈小。

对于使用链表法的散列表来说,查找一个元素的平均时间是O(1+a),因此如果负载因子越大,对空间的利用更充分,然而后果是查找效率的降低;如果负载因子太小,那么散列表的数据将过于稀疏,对空间造成严重浪费。

系统默认负载因子为0.75,一般情况下我们是无需修改的。

HashMap是一种支持快速存取的数据结构,要了解它的性能必须要了解它的数据结构。

java常见的集合类的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于Java的集合类、java常见的集合类的信息别忘了在本站进行查找喔。

The End

发布于:2022-12-02,除非注明,否则均为首码项目网原创文章,转载请注明出处。