Java学习笔记(十一)
来源:互联网 发布:java超市管理系统项目 编辑:程序博客网 时间:2024/05/18 01:46
一、回顾
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类
- java学习笔记(十一)
- Java学习笔记(十一)
- Java学习笔记(十一)
- Java学习笔记(十一)
- java学习笔记(十一)
- Java学习笔记十一
- java学习笔记(二十一)继承
- JAVA学习笔记(十一)连接数据库
- Java学习笔记(十一)多线程
- 学习笔记(十一)
- java-J2SE学习笔记(十一)
- Java学习(十一)
- 黑马程序员——JAVA学习笔记(十一)
- JAVA学习笔记(十一):enum的使用
- JAVA学习笔记整理十一(数据库编程)
- Effective Java 学习笔记(十、十一、十二)
- java学习笔记(十一)封装、this关键字与static
- java学习笔记(二十一)正则表达式
- hdu 2006
- 大整数乘法【循环法】
- hdu 2007
- acdream 1015Double Kings 树形结构 贪心
- 解决eclipse 修改替换xml文件,卡死 慢
- Java学习笔记(十一)
- hdu 2008
- Java学习笔记(十二)
- 才疏学浅,真诚欢迎指正!
- hdu 2009
- JavaSE基础复习三:异常机制知识点
- windows下Mysql启动不了解决方案
- Java学习笔记(十三)
- 微博 获取指定用户发表的所有微博