JAVA-Set,List,Map三大集合之我见
来源:互联网 发布:编程计算xyz yzz 编辑:程序博客网 时间:2024/06/05 06:13
一.集合的优点
集合又称为动态数组,相对于数组来说,集合是可以动态扩充的;一般定义一个数组要固定其长度,这就很不方便了,数组固定长度太短,不利于存储数据,太长又浪费空间;
而集合能很好地解决数组这种不足,能够动态添加存储空间;
二.集合的分类
集合共分为Collection和键值对的Map
1.Collection接口
Collection接口又包括Set和List接口,换一种说法:Set和List接口都是继承于Collection接口;
(1).List接口(继承于Collection接口)及其实现类
List接口及其实现类是容量可变的列表,可按索引访问集合中的元素。
特点:集合中的元素有序、可重复;
列表在数据结构中分别表现为:数组和向量、链表、堆栈、队列。
实现类:
ArrayList 实现一个数组,它的规模可变并且能像链表一样被访问。它提供的功能类似Vector类但不同步,它是以Array方式实现的List,允许快速随机存取。
LinkedList实现一个链表,提供最佳顺序存取,适合插入和移除元素。由这个类定义的链表也可以像栈或队列一样被使用。提供最佳顺序存取,适合插入和移除元素。
(2).Set接口(继承于Collection接口)及其实现类
特点:集合中的元素不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。
对Set中成员的访问和操作是通过Set中对象的引用进行的,所以集中不能有重复对象。
Set也有多种变体,可以实现排序等功能,如TreeSet,它把对象添加到集中的操作将变为按照某种比较规则将其插入到有序的对象序列中.它实现的是SortedSet接口,也就是加入了对象比较的方法。通过对集中的对象迭代,我们可以得到一个升序的对象集合。
实现类:
HashSet 能够快速定位一个元素,要注意的是:存入HashSet中的对象必须实现HashCode()方法;
TreeSet 将放入其中的元素按序存放。
2.映射 Map接口及其实现类
Map是一个单独的接口,不继承于Collection。Map是一种把键对象和值对象进行关联的容器。
特点:key不允许重复。
实现类:
HashMap 实现一个键到值映射的哈希表,通过键取得值对象,没有顺序,通过get(key)来获取value,允许存储空对象,而且允许键是空(由于键必须是唯一的,当然只能有一个);
HashTable 实现一个映象,所有的键必须非空。为了能高效的工作,定义键的类必须实现hashcode()方法和equal()方法。这个类是前面java实现的一个继承,并且通常能在实现映象的其他类中更好的使用。
当元素的顺序很重要时选用TreeMap,当元素不必以特定的顺序进行存储时,使用HashMap。Hashtable的使用不被推荐,因为HashMap提供了所有类似的功能,并且速度更快。当你需要在多线程环境下使用时,HashMap也可以转换为同步的。
- JAVA-Set,List,Map三大集合之我见
- JAVA三种集合LIST、SET、MAP
- JAVA:三种集合LIST、SET、MAP
- JAVA:三种集合LIST、SET、MAP
- Java数据结构之List、Set、Map集合
- java集合之Collection---set/map/list
- Java 集合中的三大新秀Map Set List的区别
- java集合 set list map
- [java]集合 list set map
- java集合 list set map
- java集合set,list、map
- Java list-set-map集合
- java集合(list,set,map)
- java 集合 List Map Set
- Java集合(list,Set,Map)集合
- java基础之集合List、Set、Map的区别
- Java之数组array和集合list、set、map
- java基础之集合(Set,Map,List)总结
- redis cluster3.2.0注意点
- JAVA 数据类型
- HAUT校赛--最大奇子段和
- vs 2010 配置 glut
- Java中普通代码块,构造代码块,静态代码块区别及代码示例
- JAVA-Set,List,Map三大集合之我见
- CF-Codeforces Round #410 (Div. 2)-D-Mike and distribution
- 406. Queue Reconstruction by Height (Medium)
- Git使用疑难问题分析
- 【笔记】formvalidtor使用总结
- html5 ajax Java接口 上传图片
- Linux下Bash Shell的常用配置文件
- ML中Boosting和Bagging的比较
- 【Axure】-- 流程条制作