Java中的集合类
来源:互联网 发布:admaster 数据分析招聘 编辑:程序博客网 时间:2024/03/29 06:04
一:集合框架中的接口
(1)Collection:集合层次中的根接口,JDK没有提供这个接口实现的直接类;
(2)Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set;
(3)List:是一个有序的集合,可以包含重复的元素。提供了按索引访问方式;
(4)Map:包含了key-value对,Map不能包含重复的key,SortedMap是一个按照升序排列的key的Map。
二:集合框架中的实现类:
(1)Set: HashSet和LinkedHashSet
(2)List: ArrayList和LinkedList;
(3)SortedSet: TreeSet
三:ArrayList:
(1)ArrayList,我们可以将其看成是能够自动增长容量的数组。
(2)利用ArrayList的toArray()返回一个数组。
(3)Arrays.asList()返回一个列表(List类型变量)。
(4)迭代器(Iterator)给我们提供了一种通用的方法来访问集合中的元素。
四:Collections类
(1)排序:Collections.sort()————自然排序;实现比较器(Comparator)接口;
(2)取最大和最小元素:Collections.max()和Collections.min();
(3)在已排序的List中搜索指定的元素:Collections.binarySearch()
五:LinkedList
(1)LinkedList是采用双向循环链实现的;
(2)用LinkedList实现栈(Stack),队列(queue),双向队列(doublie-endedqueue)相当方便。
六:ArrayList和LinkedList的比较
(1)ArrayList底层采用数组完成,而LinkedList则是以一般的双向链表完成,其内每个对象除了数据本身外还有两个引用,分别指向前一个元素和后一个元素;
(2)如果我们经常在List的开始处增加元素,或者在List中进行插入和删除操作,我们应该使用LinkedList,否则的话使用ArrayList将更加快速。如主要是随机访问集合中的元素,则最好是采用ArrayList类来完成,因它提供了一种按索引访问元素的机制。
七:HashSet(不能有重复的元素)
(1)实现Set接口的hash table(哈希表),依靠HashMap来实现的;
(2)我们应该为要存放到散列表的各个对象定义hashCode()和equals();
八:散列表
(1)散列表又称哈希表,散列表算法的基本思想是:以结点的关键字为自变量,通过一定的函数关系(散列函数)计算出对应的函数值,以这个值作为该结点存储在散列表中的地址;
(2)当散列表中的元素存放到新的散列表中,原先的散列表将被删除。在JAVA语言中,通过负载因子(load factor)来决定何时对散列表进行再散列。例如:如果负载因子是0.75,当散列表中已经有75%的位置已经放满时,那么将进行再散列。
(3)负载因子越高(越接近1.0),内存使用效率越高,元素的寻找时间越长。负载因子越低(越接近0),元素的寻找时间越短,内存的浪费越多。
(4)HashSet的缺省负载因子是0.75,一般采用默认值;
(5)HashSet存储自定义类对象时,需要重写hashCode()和equals()方法;
九:TreeSet
(1)TreeSet是依靠TreeMap来实现的;
(2)TreeSet是一个有序的集合,TreeSet中的元素将按照升序排序,缺省的是按照自然顺序进行排列,意味着TreeSet中元素实现Comparable接口;
(3)我们可以构造TreeSet对象时,传递实现了Comparator接口的比较器对象。
十:HashSet和TreeSet的比较
HashSet是基于Hash算法实现的,其性能通常都优于TreeSet,我们通常都应该使用HashSet,在我们需要排序的功能的时候才使用TreeSet。
十一:HashMap
(1)HashMap对key进行散列;
(2)keySet(), values(), entrySet();通过键(key)计算出存储位置,把值放到这个位置上。
十二:TreeMap:按照key进行排序。
十三:HashMap和TreeMap的比较:和Set类似,HashMap的速度通常比TreeMap快,只有在需要排序的功能的时候才使用TreeMap.
(有待进一步完美.........)
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类 - -
- JAVA中的集合类
- java中的集合类
- Java中的集合类
- JAVA中的集合类
- Java中的集合类
- Java中的集合类
- java 中的集合类
- JAVA中的集合类
- java中的集合类
- Java中的集合类
- java中的集合类
- java 中的集合类
- 带参数的window.setTimeout(参数可为对象)
- 自动选择性拷贝大量文件的解决方案
- 导出excel和xml和简单方法
- 优化电脑---BAT脚本
- 第2期个人空间魅力排行榜TOP20公布(2007-11-12) 谁的最受欢迎? 看看谁是CSDN最“可爱”的人?
- Java中的集合类
- 软件技术史上最故弄玄虚的几个技术
- Android 入门开发指南之三 -- 在其他平台下开发
- 突然断电导致freebsd服务器文件系统检测错误-fsck
- "鬼股子"吴英魁:灵敏嗅觉寻找主力
- A股交易量急剧萎缩 半数股票变成了“死猪”
- 详解:数据库名、实例名、ORACLE_SID、数据库域名、全局数据库名、服务名及手工脚本创建oracle数据库
- inline函数(转载)
- ASP.net对SQL server数据库里取image类型怎么取