概述
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
类集
所谓的类集就是一个动态的对象数组,是对一些实现好的数据结构进行了包装,这样在使用时非常方便,而且最终要的是类集框架本身不受对象数组长度的限制。
类集框架被设计成拥有一下几个特性:
1、这种框架是高性能的,对基本类集(动态数组、链接表、树和散列表)的实现是高效的。所以一般很少需要人工去对这些“数据引擎”编写代码。
2、框架必须允许不同类型的类集以相同的方式和高度互操做方式工作。
3、类集必须是容易扩展和修改的,为了实现这一目标,类集框架被设计成包含了一组标准接口。
JAVA中集合类的关系图:
1、 Collection 接口
Collection接口是集合的最大接口,但是用其进行操作表示的意思不明确。其在开发中主要使用的是其子类接口:
1、 List:可以存放重复的内容。
2、 Set:不能存放重复的内容,所有的重复内容靠hashCode()和equals()两个方法区分。
3、 Queue:队列接口。
4、 SortedSet:可以对集合中的数据进行排序。
1.1 List接口:
A、ArrayList 子类
||-增加元素方法:public boolean add(E o)
||-增加一组元素:public boolean addAll(Collection<? extends E>c)
||-在指定位置增加元素:public boolean add(E o)
||-每次删除一个对象:public boolean remove(Object o).
||-每次删除一组对象:public E remove(int index)。
||-获取长度:size()
||-获取指定位置的元素: get(int index)
样板代码:
import java.util.ArrayList ;
import java.util.List ;
import java.util.Collection ;
public class Test{
public static void main(String args[]){
List<String> allList = null ;
Collection<String> allCollection = null ;
allList = new ArrayList<String>() ; // 指定操作的泛型为String
allCollection = new ArrayList<String>() ; // 指定一个集合
allList.add("Hello") ; // 此方法由Collection接口而来
allList.add(0,"World") ; // 在第一个位置上添加新的内容
System.out.println(allList) ;
allCollection.add("LZZ") ; // 向Collection中加入内容
allCollection.add("www.csdn.cn") ;
allList.addAll(allCollection) ;
allList.addAll(0,allCollection) ;
allList.remove(0) ; // 删除第一个元素,指定删除的位置
allList.remove("Hello") ; // 此方法由Collection接口继承而来
System.out.println(allList) ;
System.out.print("由前向后输出:") ;
for(int i=0;i<allList.size();i++){
System.out.print(allList.get(i) + "、") ;
}
System.out.print("n由后向前输出:") ;
for(int i=allList.size()-1;i>=0;i--){
System.out.print(allList.get(i) + "、") ;
}
}
};
注:与ArrayList 功能相似的类 Vector类
其定义;
Public class Vector<E>extends AbstractList<E>implements List<E>,RandomAccess,Cloneable,Serializable
此类与ArrayList类一样也继承AbstractList类
样板代码:
import java.util.Vector ;
import java.util.List ;
public class Test{
public static void main(String args[]){
List<String> allList = null ;
allList = new Vector<String>() ; // 指定操作的泛型为String
allList.add("Hello") ; // 此方法由Collection接口而来
allList.add("Hello") ; // 此方法由Collection接口而来
allList.add(0,"World") ; // 在第一个位置上添加新的内容
allList.add("MLDN") ; // 向Collection中加入内容
allList.add("www.mldn.cn") ;
for(int i=0;i<allList.size();i++){
System.out.print(allList.get(i) + "、") ;
}
}
};
ArrayList与Vector比较:
序号 | 比较点 | ArrayList | Vector |
1 | 推出时间 | JDK 1.2之后推出,属于新的操作类 | JDK1.0推出 |
2 | 性能 | 采用异步处理方式,性能更高 | 采用同步处理方式,性能低 |
3 | 线程安全 | 属于非线程安全的操作类 | 属于线程安全的操作类 |
4 | 输出 | 只能使用Iterator、foreach输出 | 可以使用:Iterator、foreach Enumeration输出 |
B.LinkedList 子类:
使用方法:
||-在链表开头增加元素:public void addFist(E o);
||-在链表结尾增加元素:public void addLast(E o);
||-在链表开头增加元素:public boolean offer (E o);
||-在链表开头增加元素:public E removeFist(E o);
||-在链表开头增加元素:public E removeList(E o);
样板代码:import java.util.LinkedList ;
public class Test{
public static void main(String args[]){
LinkedList<String> link = new LinkedList<String>() ;
link.add("A") ; // 增加元素
link.add("B") ; // 增加元素
link.add("C") ; // 增加元素
System.out.println("初始化链表:" + link) ;
link.addFirst("X") ; // 在开头增加数据
link.addLast("Y") ; // 在结尾增加数据
System.out.println("增加头和尾之后的链表:" + link) ;
System.out.println("1-1、element()方法找到表头:" + link.element()) ;
System.out.println("1-2、找完之后的链表的内容:" + link) ;
System.out.println("2-1、peek()方法找到表头:" + link.peek()) ;
System.out.println("2-2、找完之后的链表的内容:" + link) ;
System.out.println("3-1、poll()方法找到表头:" + link.poll()) ;
System.out.println("3-2、找完之后的链表的内容:" + link) ;
System.out.print("以FIFO的方式输出:") ;
for(int i=0;i<=link.size()+1;i++){
System.out.print(link.poll() + "、") ;
}
}
};
1.2 Set接口:
Set接口中不能加入重复的元素
使用方法:
||-HashSet 采用散列的存储方式,没有顺序
||-TreeSet 对输入的数据有序排列
样板代码:
import java.util.HashSet ;
import java.util.TreeSet;
import java.util.Set ;
public class Test{
public static void main(String args[]){
Set<String> allSet1 = new HashSet<String>() ;
allSet1.add("A") ; // 增加内容
allSet1.add("B") ; // 增加内容
allSet1.add("C") ; // 增加内容
allSet1.add("C") ; // 重复内容
allSet1.add("C") ; // 重复内容
allSet1.add("D") ; // 增加内容
allSet1.add("E") ; // 增加内容
System.out.println(allSet1) ;
Set<String> allSet2 = new TreeSet<String>() ;
allSet2.add("A") ; // 增加内容
allSet2.add("B") ; // 增加内容
allSet2.add("C") ; // 增加内容
allSet2.add("C") ; // 重复内容
allSet2.add("C") ; // 重复内容
allSet2.add("D") ; // 增加内容
allSet2.add("E") ; // 增加内容
System.out.println(allSet2) ;
}
};
根据以上的内容自己的总结:
--List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。
|--Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。
1、添加:
add(object):添加一个元素
addAll(Collection) :添加一个集合中的所有元素。
2、删除:
clear():将集合中的元素全删除,清空集合。
remove(obj) :删除集合中指定的对象。注意:删除成功,集合的长度会改变。 removeAll(collection) :删除部分元素。部分元素和传入Collection一致。
3、判断:
boolean contains(obj) :集合中是否包含指定元素 。
boolean containsAll(Collection) :集合中是否包含指定的多个元素。 boolean isEmpty():集合中是否有元素。
4、获取:
int size():集合中有几个元素。
5、取交集:
boolean retainAll(Collection) :对当前集合中保留和指定集合中的相同的元素。如果两个集合元素相同,返回flase;如果retainAll修改了当前集合,返回true。
6、将集合变成数组:
toArray();
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
最后
以上就是甜美糖豆为你收集整理的黑马程序员——JAVA学习笔记——类集——(List,Set)的全部内容,希望文章能够帮你解决黑马程序员——JAVA学习笔记——类集——(List,Set)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复