一、新内容(Util包)ArrayList/LinkedList,Vector,HashSet,迭代器Iterator,自定义比较器,HashMap
一、Java的集合框架的使用
1、什么是集合框架?
是一组类和接口,位于java.util包中,用来存储和管理对象,分为三大类:集合、列表、映射。
2、集合的种类?
三大类:集合、列表、映射。
什么是集合(set):集合中的对象不按特定方式排序,并且没有重复对象。
什么是列表(list): 集合中的对象按照索引位置排序,可以有重复对象。
什么是映射(map):集合中的每一个元素包含一个键对象和一个值对象,键不可以重复,值可以重复。
3、集合框架的结构?
Collection--List--ArrayList
4、
ArrayList 对象是长度可变的对象引用数组,类似于动态数组
继承 AbstractList 并实现 List 接口
随着元素的添加,元素的数目会增加,列表也会随着扩展
访问和遍历对象时,它提供更好的性能
add() 方法添加数据
get(下标)
size() 集合的长度
remove(下标) 移除当前元素
clear() 清除所有元素。
5、LinkedList:链表结构的集合
链表 ,类似与ArrayList,但存储方式不相同(顺序排放与链表结构排放)
构造函数 : LinkedList(); LinkedList(int length);
常用方法:基本等同于ArrayList
addFirst() addLast()
getFirst() getLast()
removeFirst:移除第一个
removeLast:移除最后一个
区别:Arraylist:检索效率较高。LinkedList:删除和修改效率较高。
HashMap:是键值对的方式保存数据,没有索引。没有顺序。不能用重复的键。
二、Collection接口
1、Collection接口的常用方法:
int size();
boolean isEmpty();
boolean add(E e);
boolean remove(Object o);
void clear();
2、由Collection接口派生的两个接口是List和Set。
三、Set和HashSet的使用方法
主要方法: add(),remove(),size(),clear(); contains(o) 判断是否包含对象o
特点:不能添加重复对象。
如何确定两个对象是否相同:除了equals方法返回为true,
hashCode()方法返回值也必须相同,该返回值用来确定每个对象在set中的位置,
只有相同才能保证会放到HashSet中的同一个位置。
1、接口和实现接口和实现类:Collection--Set--HashSet
2、代码示例:TestHashSet.java
3、Set不保存重复的元素。
4、Set : 存入Set的每个元素都必须是唯一的,因为Set不保存重复元素。
加入Set的元素必须定义equals()方法以确保对象的唯一性。
Set与Collection有完全一样的接口。Set接口不保证维护元素的次序。
5、HashSet : 它不允许出现重复元素;不保证集合中元素的顺序,(没有索引没有键)
可以自己做个例子可以看出加入的字段顺序跟遍历出的不一样,
允许包含值为null的元素,但最多只能有一个null元素(不允许重复嘛!)。
四、Iterator接口(迭代器:用于遍历整个Set)
Set集合没有索引,不能使用get访问,但所有Collection的子类都能通过迭代器进行循环访问每个元素。
1、主要方法: hasNext(); next();
2、如何遍历Collection中的每一个元素?
不论Collection的实际类型如何,它都支持一个iterator()的方法,
该方法返回一个迭代器对象,使用该迭代器对象即可逐一访问Collection中每一个元素。
典型的用法如下:
Iterator it=collection.iterator();//获得一个迭代器对象
while(it.hasNext()){
Object obj=it.next();//得到下一个元素
}
3、代码示例:TestHashSet.java
五、Map类型集合:HashMap(HashMap是Map的实现类)
1.与Collection集合不同,Map类型集合每个元素值都包含两个对象:键--值
键在Map中不能有重复对象
2.主要方法:
put(key,value);
size();
remove(key);
clear();
containsKey(key) 判断是否包含键key
containsValue(value)判断是否包含值value
其中put方法若添加重复的键,则表示覆盖原来的键的值。
3.Map不存在索引,但同样可以实现循环访问:
使用:keySet()或entrySet()
4.代码示例:TestHashMap.java
六、Collections 集合工具类
java.lang.Object
继承者 java.util.Collections
常用方法(静态):sort(List) 给List类型的集合排序(排序类必须包含CompareTo方法)
reverse(List) 将List类型的集合反转