一、回顾
1、Itrator与ListIterator
Itrator从前向后的迭代:
Itrator<TypeName> itrator=collectionObj.itrator();
while(itrator.hasNext()){
TypteName obj=itrator.next();
//具体业务;
}
ListIterator双向迭代:
ListItrator<TypeName> listItrator=collectionObj.listItrator();
while(listItrator.hasNext()){
nextIndex()得到下一个项的索引值
TypteName obj=listItrator.next();
//具体业务;
}
while(listItrator.hasPrevious()){
previousIndex()得到前一个项的索引值;
TypteName obj=listItrator.previous();
//具体业务;
}
add()可以直接操作加到头部
listItrator.add(TypeName obj);
set()和remove()都需要先取得相应项的指针,然后再操作
listItrator.set(TypeName obj);
listItrator.remove();
注意:当集合对象确定迭代器对象后,迭代操作前,不允许通过集合对象自己修改集合元素,而应该使用迭代器对象实现修改操作。
2、List与Set
List接口规定了实现了List接口的集合类型,其中的元素可以重复。
List适合经常追加数据,插入,删除数据。但随即取数效率比较低。
Set接口规定了实现了Set接口的集合类型,其中的元素不允许重复。
Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
3、具体实现类
3-1、ArrayList
理解为动态数组,可以通过索引操作其中的元素。
isEmpty(),size(),contains(),add(Object obj),add(int index,Object obj)
get(int index),remove(int index),remove(Object obj),itrator(),set()
indexOf(),lastIndexOf()等。
创建对象:
ArrayList<TypeName> arrayList=new ArrayList<TypeName>();
3-2、LinkedList
相当于双向链表,相比ArrayList多了一些方法。
addFirst(),addLast(),removeFist(),removeLast(),getFirst(),getLast()
创建对象:
LinkedList<TypeName> linkedList=new LinkedList<TypeName>();
3-3、HashSet
不允许重复元素,数据结构是哈希表,所以,不保证存储元素的顺序。
创建对象:
HashSet<TypeName> hashSet=new HashSet<TypeName>();
其行为和Conllection接口中的方法一致。
3-4、TreeSet
不允许重复元素,在add(TypeName obj)时,如果obj已经存在,那么添加不成功,但是不会报错,方法会返回false值,数据结构是二叉树,所以,会排序。
创建对象:
TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
要求:TypeName类是实现了Comprable接口的。
TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
要求:在创建集合对象时,匹配一个比较器。
4、Comprable
4-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
要求:TypeName类是实现了Comprable接口的。
public abstract int compareTo(Object obj);
public class TypeName implements Comprable<TypeName>{
//实现compareTo方法
public int compareTo(TypeName typeName){
if(this.fieldName>typeName.fieldName){
return 1;
}else if(this.fieldName<typeName.fieldName){
return -1;
}else{
return 0;
}
}
}
5、Comparator
5-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
要求:在创建集合对象时,匹配一个比较器。
public abstract int compare(Object obj1,Object obj2);
public class ComparorTypeName implements Comparator<TypeName>{
//实现compareTo方法
public int compare(TypeName typeName1,TypeName typeName2){
if(typeName1.fieldName>typeName2.fieldName){
return 1;
}else if(typeName1.fieldName>typeName2.fieldName){
return -1;
}else{
return 0;
}
}
}
比较器类型可以是外部类,也可以成员内部类,可以是静态内部类,也可以是匿
名类。
TreeSet<TypeName> treeSet=new TreeSet<TypeName>(new ComparorTypeName());
当通过如下方法添加元素时,就可以按照比较器确定的比较原则排序。
treeSet.add(obj);
二、今天的内容
1、Map接口:规定了以键值对方式存储元素的集合类型,必须拥有的特征。
通过KEY值可以找到其对应VALUE值,键值不可以重复,值可以。
拴住 你
狗蛋 你
key 和 value都是引用型。
注意:在用put(key, value)添加元素时,如果key已经出现过,新的添加
会覆盖原来的value。
1-1、实现类:
1)HashMap
题目:自定义HashMap对象,在其中通过泛型确定操作的键值对类型,然后通过增删
改查(通过key查,通过values集合查,key的集合遍历,Map.Entry集合查)
来学习常用方法的使用.
2)TreeMap:天然会排序,升序,按照key排序。
2、Collections类
3、Arrays类
1、Itrator与ListIterator
Itrator从前向后的迭代:
Itrator<TypeName> itrator=collectionObj.itrator();
while(itrator.hasNext()){
TypteName obj=itrator.next();
//具体业务;
}
ListIterator双向迭代:
ListItrator<TypeName> listItrator=collectionObj.listItrator();
while(listItrator.hasNext()){
nextIndex()得到下一个项的索引值
TypteName obj=listItrator.next();
//具体业务;
}
while(listItrator.hasPrevious()){
previousIndex()得到前一个项的索引值;
TypteName obj=listItrator.previous();
//具体业务;
}
add()可以直接操作加到头部
listItrator.add(TypeName obj);
set()和remove()都需要先取得相应项的指针,然后再操作
listItrator.set(TypeName obj);
listItrator.remove();
注意:当集合对象确定迭代器对象后,迭代操作前,不允许通过集合对象自己修改集合元素,而应该使用迭代器对象实现修改操作。
2、List与Set
List接口规定了实现了List接口的集合类型,其中的元素可以重复。
List适合经常追加数据,插入,删除数据。但随即取数效率比较低。
Set接口规定了实现了Set接口的集合类型,其中的元素不允许重复。
Set适合经常地随即储存,插入,删除。但是在遍历时效率比较低。
3、具体实现类
3-1、ArrayList
理解为动态数组,可以通过索引操作其中的元素。
isEmpty(),size(),contains(),add(Object obj),add(int index,Object obj)
get(int index),remove(int index),remove(Object obj),itrator(),set()
indexOf(),lastIndexOf()等。
创建对象:
ArrayList<TypeName> arrayList=new ArrayList<TypeName>();
3-2、LinkedList
相当于双向链表,相比ArrayList多了一些方法。
addFirst(),addLast(),removeFist(),removeLast(),getFirst(),getLast()
创建对象:
LinkedList<TypeName> linkedList=new LinkedList<TypeName>();
3-3、HashSet
不允许重复元素,数据结构是哈希表,所以,不保证存储元素的顺序。
创建对象:
HashSet<TypeName> hashSet=new HashSet<TypeName>();
其行为和Conllection接口中的方法一致。
3-4、TreeSet
不允许重复元素,在add(TypeName obj)时,如果obj已经存在,那么添加不成功,但是不会报错,方法会返回false值,数据结构是二叉树,所以,会排序。
创建对象:
TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
要求:TypeName类是实现了Comprable接口的。
TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
要求:在创建集合对象时,匹配一个比较器。
4、Comprable
4-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>();
要求:TypeName类是实现了Comprable接口的。
public abstract int compareTo(Object obj);
public class TypeName implements Comprable<TypeName>{
//实现compareTo方法
public int compareTo(TypeName typeName){
if(this.fieldName>typeName.fieldName){
return 1;
}else if(this.fieldName<typeName.fieldName){
return -1;
}else{
return 0;
}
}
}
5、Comparator
5-1、TreeSet<TypeName> treeSet=new TreeSet<TypeName>(Comparator comparator);
要求:在创建集合对象时,匹配一个比较器。
public abstract int compare(Object obj1,Object obj2);
public class ComparorTypeName implements Comparator<TypeName>{
//实现compareTo方法
public int compare(TypeName typeName1,TypeName typeName2){
if(typeName1.fieldName>typeName2.fieldName){
return 1;
}else if(typeName1.fieldName>typeName2.fieldName){
return -1;
}else{
return 0;
}
}
}
比较器类型可以是外部类,也可以成员内部类,可以是静态内部类,也可以是匿
名类。
TreeSet<TypeName> treeSet=new TreeSet<TypeName>(new ComparorTypeName());
当通过如下方法添加元素时,就可以按照比较器确定的比较原则排序。
treeSet.add(obj);
二、今天的内容
1、Map接口:规定了以键值对方式存储元素的集合类型,必须拥有的特征。
通过KEY值可以找到其对应VALUE值,键值不可以重复,值可以。
拴住 你
狗蛋 你
key 和 value都是引用型。
注意:在用put(key, value)添加元素时,如果key已经出现过,新的添加
会覆盖原来的value。
1-1、实现类:
1)HashMap
题目:自定义HashMap对象,在其中通过泛型确定操作的键值对类型,然后通过增删
改查(通过key查,通过values集合查,key的集合遍历,Map.Entry集合查)
来学习常用方法的使用.
2)TreeMap:天然会排序,升序,按照key排序。
2、Collections类
3、Arrays类