java什么时候用集合(Java中的集合有哪些 在什么情况下使用)
大家好,今天给各位分享java什么时候用集合的一些知识,其中也会对Java中的集合有哪些 在什么情况下使用进行解释,文章篇幅可能偏长,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在就马上开始吧!
java集合是什么
Java集合是什么:
Java中的集合类库可以帮助我们在程序设计中实现传统的数据结构。
Java的集合类是一个用来存放对象的容器,有以下特点:
1、Java集合只能存放对象。加入添加了一个基本数据类型,会被自动装箱后存入集合。
2、集合存放的是多个对象的引用,对象本身是在堆内存中的。
3、集合可以存放不同类型,不限数量的数据类型。
集合分三种:1、Set 2、List 3、Map,下面进行具体介绍。
扩展链接:主要内容:
1)手写ArrayList
2)手写单链表
3)手写LinkedList
4)手写HashMap
5)手写HashSet
6)最新并发集合类
学习目标:
1.掌握手写ArrayList
2.掌握手写单链表
3.掌握手写LinkedList
4.掌握手写HashMap
5.掌握手写HashSet
6.理解最新并发集合类底层原理
视频课程小结:
01_集合提升训练_手写ArrayList_get_size_isEmpty_自定义异常
02_集合提升训练_手写ArrayList_构造方法_add
03_集合提升训练_手写ArrayList_toString_iterator
04_集合提升循环_手写单链表_get
05_集合提升训练_手写单链表_add_remove_toString
06_集合提升训练_手写LinkedList
07_集合提升训练_手写LinkedList_添加内存分配图
08_集合提升训练_HashMap的原理和代码准备
09_集合提升训练_手写HashMap的put
10_集合提升训练_手写HashMap的get_toString
11_集合提升训练_手写HashSet
12_集合提升训练_新一代并发集合类
java中list、set和map 在什么场景下使用
list列表
set集合
map映射
从词义上可以看出来它们的大概作用:
列表是顺序存放对象的,可以有相同的对象,通过索引存取;
集合是无序存放对象的,其中不能有重复的对象(唯一的,回忆高中时候数学中学习的集合特性),集合没有索引,只能遍历次存取;
映射,存放的是键与值的映射,其中键是唯一的(不能有重复对象),而值可以有重复的对象,存的时候,需要指定键和对应的值,取的时候可以根据键名取到值,也可以遍历。
至于在什么时候使用,这个是要因地制宜的。
列表,在能直接使用数组的时候,就有使用列表,如一个班的学生的成绩,成绩是可以重复的;
集合,一般用于存放无序的(指顺序不重要)不能重复的对象,如一个班的学生的学号,学号是不能重复的;
映射,用于存放具有对应关系的键值对,如一个班的学生的学号与姓名的映射,每个学号对应了一个学生的姓名,学号不能重复,但是姓名可能会重复;
java有哪些集合
亲,Java的集合框架不是在百度知道里面说得清楚的。Java集合本身就很复杂,而且有一开始有些设计错误,后面在持续的修改。你想了解清除,可以看下Thinking in Java和疯狂Java讲义(为什么要两本呢?前一本讲得很系统,但是没有Java7的内容,所以要看后一本),看的时候配合查下官方文档。
如果你想快速了解使用的话,那么你只需要知道:在大多数情况下用ArrayList代替数组,用HaspMap存储Key-Value就行了。
Java中的集合有哪些 在什么情况下使用
Collection:List、Set
Map:HashMap、HashTable
如何在它们之间选择
一、Array, Arrays
Java所有“存储及随机访问一连串对象”的做法,array是最有效率的一种。
1、
效率高,但容量固定且无法动态改变。
array还有一个缺点是,无法判断其中实际存有多少元素,length只是告诉我们array的容量。
2、Java中有一个Arrays类,专门用来操作array。
arrays中拥有一组static函数,
equals():比较两个array是否相等。array拥有相同元素个数,且所有对应元素两两相等。
fill():将值填入array中。
sort():用来对array进行排序。
binarySearch():在排好序的array中寻找元素。
System.arraycopy():array的复制。
二、Collection, Map
若撰写程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。
1、Collection和 Map的区别
容器内每个为之所存储的元素个数不同。
Collection类型者,每个位置只有一个元素。
Map类型者,持有 key-value pair,像个小型数据库。
2、各自旗下的子类关系
Collection
--List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。
--ArrayList/ LinkedList/ Vector
--Set:不能含有重复的元素
--HashSet/ TreeSet
Map
--HashMap
--HashTable
--TreeMap
3、其他特征
* List,Set,Map将持有对象一律视为Object型别。
* Collection、List、Set、Map都是接口,不能实例化。
继承自它们的 ArrayList, Vector, HashTable, HashMap是具象class,这些才可被实例化。
* vector容器确切知道它所持有的对象隶属什么型别。vector不进行边界检查。
三、Collections
Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。
相当于对Array进行类似操作的类——Arrays。
如,Collections.max(Collection coll);取coll中最大的元素。
Collections.sort(List list);对list中元素排序
四、如何选择?
1、容器类和Array的区别、择取
*容器类仅能持有对象引用(指向对象的指针),而不是将对象信息copy一份至数列某位置。
*一旦将对象置入容器内,便损失了该对象的型别信息。
2、
*在各种Lists中,最好的做法是以ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList();
Vector总是比ArrayList慢,所以要尽量避免使用。
*在各种Sets中,HashSet通常优于HashTree(插入、查找)。只有当需要产生一个经过排序的序列,才用TreeSet。
HashTree存在的唯一理由:能够维护其内元素的排序状态。
*在各种Maps中
HashMap用于快速查找。
*当元素个数固定,用Array,因为Array效率是最高的。
结论:最常用的是ArrayList,HashSet,HashMap,Array。
注意:
1、Collection没有get()方法来取得某个元素。只能通过iterator()遍历元素。
2、Set和Collection拥有一模一样的接口。
3、List,可以通过get()方法来一次取出一个元素。使用数字来选择一堆对象中的一个,get(0)...。(add/get)
4、一般使用ArrayList。用LinkedList构造堆栈stack、队列queue。
5、Map用 put(k,v)/ get(k),还可以使用containsKey()/containsValue()来检查其中是否含有某个key/value。
HashMap会利用对象的hashCode来快速找到key。
* hashing
哈希码就是将对象的信息经过一些转变形成一个独一无二的int值,这个值存储在一个array中。
我们都知道所有存储结构中,array查找速度是最快的。所以,可以加速查找。
发生碰撞时,让array指向多个values。即,数组每个位置上又生成一个梿表。
6、Map中元素,可以将key序列、value序列单独抽取出来。
使用keySet()抽取key序列,将map中的所有keys生成一个Set。
使用values()抽取value序列,将map中的所有values生成一个Collection。
为什么一个生成Set,一个生成Collection?那是因为,key总是独一无二的,value允许重复
参考资料: http://blog.163.com/xyz_1112/blog/static/386944022007113032941347/
OK,关于java什么时候用集合和Java中的集合有哪些 在什么情况下使用的内容到此结束了,希望对大家有所帮助。