定义
java中的集合 是管理一组对象的容器
详细介绍
1 Collection是父类接口。定义了可用于操作List、Set和Queue的方法--增删改查;
2 List接口及其实现类
l List
List代表一个元素有序、且可重复的集合,集合中的每个元素都有其对应的顺序索引。
l ArrayList
List list = new ArrayList();
ArrayList 数组序列,是List的一个常用实现类。
ArrayList 有序、可重复、迭代性能好、插入和移除性能差。
ArrayList 是线程不安全的,在多线程的情况下不要使用。
如果在初始化ArrayList的时候没有指定初始化长度的话,默认长度为10。
如果ArrayList在增加新元素超过了容量大小的话,ArrayList会根据算法自动扩容原始容量*3/2+1
**ArrayList实现遍历的几种方法:
第一种foreach遍历集合
for(Object object : list) {
System.out.println(object);
}
第二种 迭代器遍历集合
Iterator<String>itr=list.iterator();
while(itr.hasNext()){
System.out.println(itr.next());
}
l LinkedList
在List的基础上,LinkedList是一个双向链表的结构,添加删除性能好,迭代弱。是非线程安全。
Listlist=new LinkedList();
**LinkedList相当于链表而ArrayList相当于数组**
LinkedList集合的遍历
*LinkedList遍历的第一种方式使用数组的方式
String[] strArray=new String[list.size()];
list.toArray(strArray);
for(String str:strArray)
{
System.out.println(str);
}
*LinkedList遍历的第二种方式
for(String str:list)
{
System.out.println(str);
}
3 Set接口及其实现类
l Set
Set接口 不允许元素重复、无序、仅仅可以有一个null值。Set中元素的位置是由HashCode决定的。
l HashSet
Set的实现类 如果不考虑排序的话,用HashSet来存储元素。速度快。
HashSet的遍历方法和ArrayList方法一致。
l LinkedHashSet
LinkedHashSet和HashSet相似。
***区别是LinkedHashSet有序***
l TreeSet
TreeSet的最大的功能是可以给元素排序。。
TreeSet分为自然排序和定制排序它在讲对象元素添加到集合中时会自动按照某种比较规则将其插入到有序的对象序列中,并保证该集合元素组成按照“升序”排列
*****自然排序*****
TreeSet会调用集合元素的compareTo(Objectobj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。(比较的前提:两个对象的类型相同)。
java提供了一个Comparable接口,该接口里定义了一个compareTo(Object obj)方法,该方法返回一个整数值,实现该接口的类必须实现该方法,实现了该接口的类的对象就可以比较大小。当一个对象调用该方法与另一个对象进行比较,例如obj1.comparTo(obj2),如果该方法返回0,则表明这两个对象相等;如果返回一个正整数,则表明obj1大于obj2;如果该方法返回一个负整数,则表明obj1小于obj2。
java常用类实现Comparable接口,并提供了比较大小的标准。实现Comparable接口的常用类:
BigDecimal、BigIneger以及所有数值型对应包装类
Boolean、String
*****如果试图把一个对象添加进TreeSet时,则该对象的类必须实现Comparable接口。
*****定制排序*****
TreeSet的自然排序是根据集合元素的大小,TreeSet将他们以升序排列。如果需要实现定制排序,例如降序,则可以使用Comparator接口。该接口里包含一个int compare(T o1, T o2)方法,该方法用于比较o1和o2的大小。如果需要实现定制排序,则需要在创建TreeSet集合对象时,
并提供一个Comparator对象与该TreeSet集合关联,由该Comparator对象负责集合元素的排序逻辑。
4 Map接口及其实现类
l Map
Map接口实现的是一组Key-Value的键值对的组合。 Map中的每个成员方法由一个关键字(key)和一个值(value)构成。Map接口并不直接继承Collection接口。而且在Map接口的集合中也不能有重复的key出现,因为每个键只能与一个成员元素相对应
l HashMap
Map的实现类,HashMap的添加和删除效率更高。
l TreeMap
能够把它保存的记录根据键排序,默认是按升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
l LinkedHashMap
保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.在遍历 的时候会比HashMap慢。
l Map的遍历方法
5 Collections工具类
Collections是针对集合类的一个帮助类。提供了一系列静态方法实现对各种集合的搜索、排序、线程完全化等操作。相当于对Array进行类似操作的类——Arrays。如,Collections.max(Collection coll);取coll中最大的元素。
Collections.sort(Listlist); 对list中元素排序