Java心得--集合、列表
2012-04-28 10:31
316 查看
1.:
Collection:(在util包中)
Set:(序、元素不可重复)
List:(序、可重复;通过角标索引):
ArrayList:底层数据类型为数组,增删慢,查找(访问)快
LinkedList:底层数据类型为链表;增删快,查找(访问)慢。
Vector:底层数据类型为数组;元老级别,线程安全,但是增删和查找都不快,子类:Stack(先进后出)。
2. 集合:长度可变,可存不同数据类型,只存储对象。
数组:长度不可变,可存同一种数据类型,存储对象和基本数据类型。
3. 注意:数组、StringBuffer、乃至后文描述的各种集合类型,都是一种可以保存数据以及对象的“容器”。
Java用集合类来容纳不同种类的数据,这种容纳是建立在未知的基础上,即Java要用有限种类的集合类,来容纳无限种类的数据对象。
分类:Java的集合类可以分为三类:集、列表和映射
4. 列表(List)
List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引(元素在List中的位置)来访问List中的元素。和Set集合的不同,List允许包含重复元素。
5.斜体标识的是接口,虚线箭头表示“实现”关系
需注意:
JavaSDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”。
Collection接口有多个子接口,其中最重要的两个java.util.Set和java.util.List分别描述集Set和列表List。
Collection中的方法:
publicboolean add(E e):向集合中添加一个元素,加入成功返回ture。在其子接口中方法发生了分化,比如:Set接口添加重复元素时会被拒绝并返回false,而List接口则会接受重复元素并返回ture。
publicboolean remove(Object o) :从集合中删除指定元素
publicint size():返回元素个数,即遍历集合。
public booleancontains(Object obj):判断是否包含指定元素
publicboolean isEmpty():判断集合是否为空
publicObject[] toArray():返回包含当前集合中所有元素上的数组。
public void clear():删除所有元素
6. 不论Collection的实际类型如何,它都支持一个方法—public Iteratoriterator();该方法(iterator为一个接口,包含三个方法)返回一个枚举器(迭代器)对象,使用该方法即可遍历Collection中的每一个元素。用法:
方法一:
Iteratorit = c.iterator(); //c为集合对象
While(it.hasNext()){//hasNext()方法判断是否还有下一个元素。
Object obj = it.next();//next()获取下一个元素,返回一个对象(Object),一开始,指针都指在第一个元素的前面。
}
方法二:
for(Iteratorit = c.iterator();it.hasNext();){
Object obj = it.next();
}
方法二更好一些,一是代码简练;二是new的it对象在循环完了就不用了,while循环还保留着,但是for循环中的可以被垃圾回收机制收回。
7. java.util.List接口描述的是列表结构,允许程序员对列表元素的插入位置进行精确控制,并增加了根据元素索引来访问元素、搜索元素等功能。在继承父接口Collection的基础之上,List接口新增的相应方法:
voidadd(int index, E element):在索引号后插入对象
boolean add(Ee):将对象e插到链表最后
Eremove(int index):删除指定索引号元素
booleanremove(Object o):删除列表第一个指定内容元素
Eget(int index):得到指定索引号的元素,没有用到泛型时,返回值类型是Object,所以在这种情况下要根据实际,把这个返回对象强制转换为它原来的类型。
intsize():同父接口
intindexOf(Object obj):找到Object元素,返回它的索引值
List<E>subList(int fromIndex, int toIndex):截子链,(有开头结尾的方法,都是包含开头不包含结尾)
voidclear()
Java.util.List接口的实现类(子类)有多个,分别体现了列表的不同分化形式。
ArrayList、Vector、Stack、LinkedList
8.Vctor类
实线了list接口,对于数据类型结构中的“向量”。
@@@构造方法:
Vctor():构造一个空向量,并设置其初始值为10,标准容量增量为0;
Vctor(intinitialCapacity):使用指定初始值为和容量增量为0构造一个空向量;
Vctor(intinitialCaption,int capacipyIncrement):使用已知初始值为和容量增量构造一个空向量。在实际项目中最常用。
Vctor(<E>c):该构造方法体现了java的新特性—泛型,只有在使用Vctor前,明确知道其中容纳对象的类型,才可以使用这种类型的构造方法。
@@@其他方法:
voidadd(E obj):向集合中添加一个元素,体现泛型特性
insertElementAt(Eobj,int index):在指定索引处添加元素
setElementAt(Eobj,int index):替换指定索引处元素,与上一个方法很相似
publicboolean removeElement(Object obj) :从集合中删除指定元素,可删除第一个obj对象,用来表示是否在Vctor中找到并删除指定对象。
void removeElementAt(intindex):删除指定索引元素
void removeAllElement():删除所有元素,可删除Vctor中所有对象,该Vctor对象的size重置为0
publicint size():返回元素个数,即遍历集合。
EelementAt(int index):依次访问Vctor中各元素,可通过此方法将对象里索引号为i的元素及泛型或Object返回
Vctor里的方法参数中插入的位置(角标)在对象后面。
9.先进后出的Stack类
Stack是Vector类的子类,特点:“后进先出”(Last InFirst Out)类型的容器,即最后一个被“压(push)”进堆栈中的对象,会被第一个“弹(pop)”出来。
@@@构造方法
Stack():用于创建支持“后进先出”访问方式的对象
例:Stack st=new Stack();
Stack <String> st = newStack();
@@@其他方法
Epeek() 返回栈顶元素,但没有弹出栈顶元素
E pop()弹出栈顶元素,并返回其中的对象。
Epush(E item) 向堆栈顶端压入item对象,同时将item对象返回。
booleanempty() 判断堆栈是否为空,如果该堆栈为空,返回true,反之返回false。
注意:由于Stack继承了Vector类,所以以下语句从语法上来讲,不会有问题。但却破坏了堆栈“后进先出”的特性,所以,不推荐使用。
st.addElement("badusage1");
st.addElement("badusage2");
st.addElement("badusage3");
for(inti=0;i<st.size();i++){
System.out.println(st.elementAt(i));
}
10.LinkedList类:链式存储方方式
逻辑上相邻的两个元素在物理上不相邻,通过“链条”连接
@@@构造方法:
LinkedList()
LinkedList(Collectionc):Collection是java里线性表类集合的基类这种构造方法可以把Collection内的各元素装载到LinkedList对象里。
LinkedList(<E>C)
@@@其他方法:
添加元素:
void addFirst(Eobj)和void addLast(E obj):在List接口中add的方法的基础上扩展了:在表头和表尾添加元素。
获取元素:
E getFirst(E obj)和ObjectgetLast(E obj):在List接口中get的方法的基础上扩展了:在表头和表尾获取元素。
删除元素:
E removeFirst(E obj)和ObjectremoveLast(E obj):在List接口中remove的方法的基础上扩展了:在表头和表尾添加元素。
11.数组:
(1)可以根据数组起始地址和其中元素的索引号,很快地定位到数组中的任意元素
(2)插入、删除元素等操作效率底
链表:
(1)链表中元素访问的代价要比数组高。
(2)能很方便地完成元素的插入和删除工作
Collection:(在util包中)
Set:(序、元素不可重复)
List:(序、可重复;通过角标索引):
ArrayList:底层数据类型为数组,增删慢,查找(访问)快
LinkedList:底层数据类型为链表;增删快,查找(访问)慢。
Vector:底层数据类型为数组;元老级别,线程安全,但是增删和查找都不快,子类:Stack(先进后出)。
2. 集合:长度可变,可存不同数据类型,只存储对象。
数组:长度不可变,可存同一种数据类型,存储对象和基本数据类型。
3. 注意:数组、StringBuffer、乃至后文描述的各种集合类型,都是一种可以保存数据以及对象的“容器”。
Java用集合类来容纳不同种类的数据,这种容纳是建立在未知的基础上,即Java要用有限种类的集合类,来容纳无限种类的数据对象。
分类:Java的集合类可以分为三类:集、列表和映射
4. 列表(List)
List列表区分元素的顺序,即List列表能够精确的控制每个元素插入的位置,用户能够使用索引(元素在List中的位置)来访问List中的元素。和Set集合的不同,List允许包含重复元素。
5.斜体标识的是接口,虚线箭头表示“实现”关系
需注意:
JavaSDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”。
Collection接口有多个子接口,其中最重要的两个java.util.Set和java.util.List分别描述集Set和列表List。
Collection中的方法:
publicboolean add(E e):向集合中添加一个元素,加入成功返回ture。在其子接口中方法发生了分化,比如:Set接口添加重复元素时会被拒绝并返回false,而List接口则会接受重复元素并返回ture。
publicboolean remove(Object o) :从集合中删除指定元素
publicint size():返回元素个数,即遍历集合。
public booleancontains(Object obj):判断是否包含指定元素
publicboolean isEmpty():判断集合是否为空
publicObject[] toArray():返回包含当前集合中所有元素上的数组。
public void clear():删除所有元素
6. 不论Collection的实际类型如何,它都支持一个方法—public Iteratoriterator();该方法(iterator为一个接口,包含三个方法)返回一个枚举器(迭代器)对象,使用该方法即可遍历Collection中的每一个元素。用法:
方法一:
Iteratorit = c.iterator(); //c为集合对象
While(it.hasNext()){//hasNext()方法判断是否还有下一个元素。
Object obj = it.next();//next()获取下一个元素,返回一个对象(Object),一开始,指针都指在第一个元素的前面。
}
方法二:
for(Iteratorit = c.iterator();it.hasNext();){
Object obj = it.next();
}
方法二更好一些,一是代码简练;二是new的it对象在循环完了就不用了,while循环还保留着,但是for循环中的可以被垃圾回收机制收回。
7. java.util.List接口描述的是列表结构,允许程序员对列表元素的插入位置进行精确控制,并增加了根据元素索引来访问元素、搜索元素等功能。在继承父接口Collection的基础之上,List接口新增的相应方法:
voidadd(int index, E element):在索引号后插入对象
boolean add(Ee):将对象e插到链表最后
Eremove(int index):删除指定索引号元素
booleanremove(Object o):删除列表第一个指定内容元素
Eget(int index):得到指定索引号的元素,没有用到泛型时,返回值类型是Object,所以在这种情况下要根据实际,把这个返回对象强制转换为它原来的类型。
intsize():同父接口
intindexOf(Object obj):找到Object元素,返回它的索引值
List<E>subList(int fromIndex, int toIndex):截子链,(有开头结尾的方法,都是包含开头不包含结尾)
voidclear()
Java.util.List接口的实现类(子类)有多个,分别体现了列表的不同分化形式。
ArrayList、Vector、Stack、LinkedList
8.Vctor类
实线了list接口,对于数据类型结构中的“向量”。
@@@构造方法:
Vctor():构造一个空向量,并设置其初始值为10,标准容量增量为0;
Vctor(intinitialCapacity):使用指定初始值为和容量增量为0构造一个空向量;
Vctor(intinitialCaption,int capacipyIncrement):使用已知初始值为和容量增量构造一个空向量。在实际项目中最常用。
Vctor(<E>c):该构造方法体现了java的新特性—泛型,只有在使用Vctor前,明确知道其中容纳对象的类型,才可以使用这种类型的构造方法。
@@@其他方法:
voidadd(E obj):向集合中添加一个元素,体现泛型特性
insertElementAt(Eobj,int index):在指定索引处添加元素
setElementAt(Eobj,int index):替换指定索引处元素,与上一个方法很相似
publicboolean removeElement(Object obj) :从集合中删除指定元素,可删除第一个obj对象,用来表示是否在Vctor中找到并删除指定对象。
void removeElementAt(intindex):删除指定索引元素
void removeAllElement():删除所有元素,可删除Vctor中所有对象,该Vctor对象的size重置为0
publicint size():返回元素个数,即遍历集合。
EelementAt(int index):依次访问Vctor中各元素,可通过此方法将对象里索引号为i的元素及泛型或Object返回
Vctor里的方法参数中插入的位置(角标)在对象后面。
9.先进后出的Stack类
Stack是Vector类的子类,特点:“后进先出”(Last InFirst Out)类型的容器,即最后一个被“压(push)”进堆栈中的对象,会被第一个“弹(pop)”出来。
@@@构造方法
Stack():用于创建支持“后进先出”访问方式的对象
例:Stack st=new Stack();
Stack <String> st = newStack();
@@@其他方法
Epeek() 返回栈顶元素,但没有弹出栈顶元素
E pop()弹出栈顶元素,并返回其中的对象。
Epush(E item) 向堆栈顶端压入item对象,同时将item对象返回。
booleanempty() 判断堆栈是否为空,如果该堆栈为空,返回true,反之返回false。
注意:由于Stack继承了Vector类,所以以下语句从语法上来讲,不会有问题。但却破坏了堆栈“后进先出”的特性,所以,不推荐使用。
st.addElement("badusage1");
st.addElement("badusage2");
st.addElement("badusage3");
for(inti=0;i<st.size();i++){
System.out.println(st.elementAt(i));
}
10.LinkedList类:链式存储方方式
逻辑上相邻的两个元素在物理上不相邻,通过“链条”连接
@@@构造方法:
LinkedList()
LinkedList(Collectionc):Collection是java里线性表类集合的基类这种构造方法可以把Collection内的各元素装载到LinkedList对象里。
LinkedList(<E>C)
@@@其他方法:
添加元素:
void addFirst(Eobj)和void addLast(E obj):在List接口中add的方法的基础上扩展了:在表头和表尾添加元素。
获取元素:
E getFirst(E obj)和ObjectgetLast(E obj):在List接口中get的方法的基础上扩展了:在表头和表尾获取元素。
删除元素:
E removeFirst(E obj)和ObjectremoveLast(E obj):在List接口中remove的方法的基础上扩展了:在表头和表尾添加元素。
11.数组:
(1)可以根据数组起始地址和其中元素的索引号,很快地定位到数组中的任意元素
(2)插入、删除元素等操作效率底
链表:
(1)链表中元素访问的代价要比数组高。
(2)能很方便地完成元素的插入和删除工作
相关文章推荐
- Java心得--集合、列表
- 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析
- Java容器集合学习心得
- Java Properties集合 文件清单列表获取
- Java集合(二):List列表
- java学习心得——添加列表查询功能
- Java精选笔记_集合【List(列表)接口】
- java 列表、集合与数组之间的转化
- java中 列表,集合,数组之间的转换
- JAVA中使用JDBC、反射技术接收实体类列表(对象放入List集合中)
- java中数组,列表,集合的基本用法
- (java)集合辅助函数之Shuffle(打乱列表)
- java并发实战第六章(2)非阻塞式线程安全列表与一般List集合多线程情况下的比较
- 从json对象集合表达式中得到一个java对象列表
- Java容器集合学习心得
- 线程高级应用-心得8-java5线程并发库中同步集合Collections工具类的应用及案例分析
- java集合——数组列表(ArrayList)+散列集(HashSet)
- Java:集合,对列表(List)中的自定义对象按属性(字段)排序(正序、倒序)的方法
- Java集合三种类型:Set<集>、List<列表>、Map<映射>
- Java容器集合学习心得