java集合类
来源:互联网 发布:vulcan软件 编辑:程序博客网 时间:2024/05/29 13:38
java集合类大致上可分为Set、List、Map,自JDK1.5之后增加了Queue体系集合,而且增加了泛型,java集合可以记住容器中对象的数据类型,从而可以编写更简洁、健壮的代码。
集合和数组的区别:
数组是固定长度的,分配固定大小的内存;而集合是不定长的。
数组中的元素类型可以是基本类型,也可以是对象;而集合里只能保存对象的引用。
java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是java集合框架的根接口,这些接口又包含了一些子接口和实现类。
Set集合:无序,所以元素不可重复。不然系统就无法准确识别这个元素。
List集合:有序,元素可重复,根据插入顺序的索引来访问数据。
Map:基于key-value的存储和访问,所以key值不可重复。
Iterator迭代器必须依附于Collection对象,当使用Iterator来迭代访问Collection集合元素时,Collection集合中的元素不能被修改,只能通过Iterator的remove方法来删除上一次next方法返回的集合元素才可以。
Set集合:Set集合不允许包含相同的元素,如果把两个相同的元素加入同一个Set集合中,则添加操作失败,add()返回false,且新元素不会被加入。判断两个元素是否相同使用的是equals()方法。
HashSet:
不能保证元素的排列顺序,顺序有可能发生变化;
HashSet不是同步的,如果有多个线程同时访问了一个Set集合并对其进行修改,必须通过代码保证其同步;
集合元素可以是null;
当向HashSet集合中存入一个元素时,HashSet会调用该对象的HashCode()方法来得到HashCode值,来决定该对象在HashSet中的存储位置。访问HashSet集合中的某个元素,也是通过调用该元素的HashCode()方法返回的HashCode值来访问该存储位置,所以该元素的HashCode值相当于该元素的索引。
HashSet判断两个元素相等的标准是两个对象通过equals()方法比较相等,并且两个对象的HashCode()方法返回值也相等。
如果两个对象通过equals()方法比较返回为true,但HashCode()返回值不同,HashSet集合会将两个元素存储在不同位置,两个对象都可以添加成功。
如果两个对象的hashCode()方法返回的HashCode()相同,但通过equals()方法比较返回false,则会在同一个存储位置里放置多个元素,导致处理性能下降。
所以自定义对象时,当两个对象通过equals()方法比较返回为true时,这两个对象HashCode应该相等。不然可能导致HashSet不能准确访问该元素。
TreeSet:
不是根据元素的插入顺序进行排序的,而是根据元素的实际值进行排序的,所以集合元素必须实现comparable接口,才能正常添加、访问。
不相等的标准:两个对象通过equals()方法比较返回fasle,并通过compareTo比较没有返回0,。 返回0则相等,返回1则obj1>obj2,返回-1则obj1<obj2;
List:
List集合代表一个有序集合,集合中的每个元素都有其对应的顺序索引。List集合判断两个对象相等只要通过equals()方法比较返回true即可。
List提供了一个listIterator()方法,返回一个ListIterator对象,增加了向前迭代和添加元素的功能。 hasPrevious()、previous()、add()方法。
ArrayList是线程不安全的,Vector是线程安全的。
HashMap是线程不安全的,HashTable是线程安全的。
HashMap可以使用null作为key或者value, 但是最多一项key为null,可以有无数项value为null; hashTable不允许使用null作为key和value.
如果不实际去用的话,看着都头晕。。。。
- Java集合:集合类详解
- Java集合-常用集合类
- JAVA【集合一】集合类
- JAVA中的集合类
- JAVA中的集合类
- JAVA中的集合类
- Java集合类(整理)
- java集合类
- JAVA中的集合类
- Java集合类笔记
- JAVA中的集合类
- java集合类
- java集合类总结
- JAVA中的集合类 - -
- JAVA中的集合类
- java集合类
- java 集合类
- java中的集合类
- csu 1723
- VS2010搭建SVN中的VisualSVN
- Hadoop学习之二《Hadoop环境伪分布式环境搭建》
- 12款最常用的Java测试工具
- poj3461
- java集合类
- Python文件读写
- 建议53:必要时应将不再使用的对象引用赋值为null
- 恢复计算机崩溃数据的五款最佳Linux发行版
- Java 向下类型转换
- 最大子数组和
- js中offsetTop,scrollTop,clientTop区别
- 短信猫软件的实现(C#)<一>熟悉串口
- finally里面的return返回值问题