框架集合——Java面向对象基础(33)
集合
集合:集合就是用于存储各种数据类型(元素类型可以不同、集合长度可变、空间不固定。)的一个容器。
Java中提供了强大的api java.util包提供了各种接口和类供我们使用
集合框架的接口及类的详解图
Collection: 一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。
List接口:一列数据,数据内容可以重复,以元素安插的次序来放置元素,不会重新排列。
Set接口:一列数据,数据内容不能重复,使用自己内部的一个排列机制放置元素。
Map接口:一列数据对,使用自己内部的一个排列机制放置元素。
List接口
ArrayList: 基于数组的方式实现,随机访问效率相对较高,插入、删除效率相对较低。初始容量默认是10,超过容量后就按当前容量的一半去增加。
掌握ArrayList方法:
add(E e) 添加元素
get(int index) 根据索引获取元素
size() 获取列表元素的个数
remove(int index) 移除指定位置的元素(注意:遍历移除元素时,容易出错。解决办法有两种:1、将指针再向前移,2、采用迭代器)
ArrayList泛型的定义方式
//对象<Integer> 泛型:约束它的存储数据类型
//注意:泛型<引用类型>,如果放置基本数据类型需要用其包装类才可。
ArrayList<Account> arrayList01 = new ArrayList<Account>();
arrayList01.add(ac1);
arrayList01.add(ac2);
arrayList01.add(ac3);
//有风险--遍历方式获取每个元素
for(Account ac : arrayList01){
System.out.println(ac.getAccountNo());
}
LinkedList:基于链表的方式实现,插入、删除效率相对较高,随机访问效率相对较低。提供了针对第一个和最后一个元素操作的具体方法。
addFirst(E e)
addLast(E e)
removeFirst()
……
其他方法和ArrayList差不多
Vector:它的用法和特点和ArrayList差不多,不同的是Vector是线程安全的,效率低,使用频率少。
LinkedList>ArrayList>Vector
Set接口
Set接口:一列数据,数据内容不能重复,使用自己内部的一个排列机制放置元素。
常用的方法:
add() —— 向集合中添加元素(增)
remove(Object o) – 将元素从集合中移除(删)
size() —— 查看集合长度
HashSet:元素不能重复,无序(按插入顺序)。可以为null、用迭代器方式遍历。
TreeSet:元素不能重复,无序(按插入顺序)。不能null、用迭代器方式遍历。内置的排序机制自然排序(对象不能直接排序:需要两种方式制定排序规则……Comparable、Comparator)
HashSet:速度快,不排序。 --使用频率较高
TreeSet:速度慢,排序。
Map接口
Map接口不是Collection接口的继承。Map接口用于维护键/值对(key/value pairs)。每个条目包括单独的两部分。
常用方法:
put() 将键值对存入集合
get() 根据键取出元素的值
keySet() 将Map中的所有键取出形成一个Set
values() 将Map中的所有值取出形成一个Collection
remove() 根据键移除值
HashMap:key采用HashSet机制
TreeMap:key采用TreeSet机制。
Hashtable:线程安全、key value都不允许为null
补充Collections集合框架中提供的工具类
Collections等价于数组中Arrays