版权声明:本文为博主原创文章,未经博主允许不得转载。 /qq_/article/details/
Java提供了三大类容器:数组——将数字与对象联系起来;Collection——保存单一的元素;Map——将对象与对象相关联。
ArrayList,适用于随机访问比较多的情况;LinkedList,提供了优化的顺序访问,适用于插入和删除较多的情况;
“后进先出”,最后“压入”栈的元素,第一个“弹出”栈。
LinkedList具有能够直接实现栈的所有功能的方法:
Set不保存重复的元素。它常被使用于测试归属性,你可以容易地查询某个对象是否在某个set中。正因为如此,查找就成为了Set中最重要的操作,因此你通常会选择一个HshSet的实现,它专门对快速查找进行了优化。
HsahSet是没有顺序的,它使用散列的数据结构,如果要对结果进行排序,可以用TreeSet代替它。
例如set里的元素是String类型,这里的排序是按字典序进行的,大写和小写字母会被划分到不同的组中。如果要按照字母序排序,可以向TreeSet的构造器传入String.CASE_INSENSITIVE_ORDER比较器。
队列是一个典型的“先进先出”的容器。即从容器的一端放入元素,从另一端取出。队列常被当做一种可靠的将对象从程序的某个区域传输到另一个区域的途径。队列在并发编程中特别重要。
返回队头,peek在为空时返回null,其他两个抛异常 |
删除并返回队头,poll在为空时返回null,remove抛异常 |
优先级队列声明下一个弹出元素是最需要的元素。
PriorityQueue调用offer()方法来插入一个对象时,这个对象会在队列中被排序,我们可以通过提供自己的Comparator来修改这个顺序。可以确保当你调用peek()、poll()和remove()方法时,获取的元素将是队列中优先级最高的元素。
迭代器是一个对象,它统一了对容器的访问方式。
使用remove()将迭代器新近返回的元素删除。
将对象映射到其他对象的能力是一种解决变成问题的杀手锏。
java提供了大量持有对象的方式:
(1)数组将数字与对象联系起来。它保存类型明确的对象,查询对象时,不需要对结果做类型的转换。它可以是多维的,可以保存基本类型的数据。但是,数组一旦生成,其容量就不能改变,即不能动态改变数组的大小。
(2)Collection保存单一的元素,而Map保存相关联的键值对(key, value)。有了java的泛型,你就可以指定容器中存放的对象类型,因此你就不会将错误的对象放置到容器中,并且在容器中获取元素时,不用进行类型的转换。各种Collection和Map都可以在你向其中添加更多元素的时候自动调整其尺寸。容器不能持有基本类型,但是自动包装机制会仔细地执行基本类型到容器中持有的包装器类型之间的双向转换。
(3)像数组一样,List也建立数字索引与对象的关联,因此,数组和List都是排好序的容器。但List能自动扩充容量、
(4)如果要进行大量的随机访问,则采用ArrayList。
如果要经常从List中插入或者删除元素,则采用LinkedList。
(5)Map是一种将对象(而非数字)与对象关联的设计。HashMap设计用来快速访问,而TreeMap保持键始终处于排序状态,所以没有HashMap快(按字母顺序排序)。LInkedHashMap保持元素插入的顺序,但是也提供了快速访问的能力。
(6)Set不接受重复元素。HashSet提供最快的查询速度,而TreeSet保持元素处于排序状态,LinkedHashSet以插入顺序保存元素。
(7 )HashMap和HashTable的区别:HashTable是同步的,这个类中的一些方法保证了HashTable中的对象时线程安全的,而HashMap是异步的,同步会影响执行的效率;HashMap可将空值作为key和value,但是HashTable是不能放入空值的。
(8)ArrayList和Vector的区别: vector是同步的,ArrayList是异步的。从内部原理来讲,ArrayList和Vector都是使用数组Array来控制集合中的对象,当你向两种集合中添加元素的时候,如果数目超过了内部数组的长度,他们都需要扩展内部数组的长度,Vector缺省的情况下缺省情况下增长一倍,ArrayList增长50%。
Java是面向对象的语言,对象时Java不可或缺的一个元素,基本数据类型有数组用来存储,那么对象元素有什么存储呢,这就是集合,集合是Java非常重要的一块知识,Java编程思想中的持有对象简述了集合的相关知识,下面简述集合的相关功能:
集合类我们通常称为容器
List可以看做是数组的扩展,它由两个实现类,其实是由三个,但是vector不经常用,慢慢也就不算在其中:
ArrayList适合随机访问,因为其底层实现是数组,所以查询快,增删比较慢
LinkedList适合做插入删除操作,底层实现是链表结构,所以查询相对就比较慢
最强大的容器,键值对表示,可以组成很多数据类型,有三种实现方式:
实现方式与Map有点类似,Set又是属于Collection集合,他不接受重复的值。
包含了对Collection和数组的一些工具类
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。