Java day15
集合collectionListArrayListLinkedListVector
集合
概述 集合是对象类型的数组 是为了解决数组的长度无法改变的问题,而出现集合和数组的区别 共同点: 都是存储数据的容器 不同点:
存储内容不同: 数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用数据类型,如果需要存储基本数据类型,存储的是包装类对象存储数量不同 数组长度不可变,一旦确定大小就不可改变 集合长度可变方法不同 数组只有Object中定义的方法,和一个length属性 集合有很多的方法 集合的体系结构
单列集合:
collection
List ArrayList LinkedList Vector Set HashSet TreeSet 双列集合:
Map HashMap TreeMap
collection
概述 单列集合的顶层接口 因为是一个接口,所以不能实例化 可以声明一个Collection的变量,指向其子类的对象常用方法 add(Object object):添加元素 remove(Object object):删除元素 clear():清空集合 isEmpty():判断是否为空 contains(Object object):判断是否包含object size():返回元素个数
public class News {
public String title
;
public String msg
;
public Date date
;
public News() {
}
public News(String title
, String msg
, Date date
) {
this.title
= title
;
this.msg
= msg
;
this.date
= date
;
}
@Override
public String
toString() {
return "News{" +
"title='" + title
+ '\'' +
", msg='" + msg
+ '\'' +
", date=" + new SimpleDateFormat("yyyy-MM-dd").format(date
) +
'}';
}
}
public class Test {
public static void main(String
[] args
) {
Collection col
= new ArrayList();
News news1
= new News("No1","News01",new Date(1000000000000L
));
News news2
= new News("No2","News02",new Date(2000000000000L
));
News news3
= new News("No3","News03",new Date(3000000000000L
));
col
.add(news1
);
col
.add(news2
);
col
.add(news3
);
Iterator iter
= col
.iterator();
while(iter
.hasNext()){
System
.out
.println(iter
.next());
}
if(!(col
.isEmpty())){
for(Object obj
:col
.toArray()){
System
.out
.println(obj
);
}
}
col
.remove(news3
);
if(!(col
.isEmpty())){
for(Object obj
:col
.toArray()){
System
.out
.println(obj
);
}
}
}
}
List
概述: Collection的一个子接口 同样不可以实例化 特点是:有序,有索引,元素可重复特有方法 add(int index,Object object):在指定索引处添加元素 remove(int index):删除指定索引的元素 set(int index,Object object):修改指定索引的元素 get(int index):获取指定索引的元素
public class Test {
public static void main(String
[] args
) {
List list
= new ArrayList();
News news1
= new News("No1","News01",new Date(1000000000000L
));
News news2
= new News("No2","News02",new Date(2000000000000L
));
News news3
= new News("No3","News03",new Date(3000000000000L
));
list
.add(news1
);
list
.add(news2
);
list
.add(news3
);
System
.out
.println("======================");
Object
[] objects
= list
.toArray();
for(int i
=0;i
<list
.size();i
++){
System
.out
.println(objects
[i
]);
}
System
.out
.println("======================");
for(int i
=0;i
<list
.size();i
++){
System
.out
.println(list
.get(i
));
}
System
.out
.println("======================");
for(Object obj
:list
){
System
.out
.println(obj
);
}
System
.out
.println("======================");
Iterator iterator
= list
.iterator();
while(iterator
.hasNext()){
System
.out
.println(iterator
.next());
}
System
.out
.println("======================");
}
}
ArrayList
概述: 是List的一个实现类 数组实现,顺序存储,线程不安全 查询速度较快
LinkedList
概述: 是List的一个实现类 链表实现,顺序存储,线程不安全 增删速度较快特有方法: addFrist(Object object):添加元素至开始 addLast(Object object):添加元素至结尾 removeFrist():删除开始元素 removeLast():删除结尾元素 getFrist():获取开始元素 getLast():获取结尾元素
public class Test {
public static void main(String
[] args
) {
String str
= "ha li ha ha ha li ni";
String
[] s
= str
.split(" +");
LinkedList list
= new LinkedList();
list
.addFirst(s
[0]);
list
.addLast(s
[s
.length
-1]);
for(int i
=1,j
=1;i
<s
.length
-1;i
++){
if(!(s
[i
].equals("li"))){
list
.add(j
,s
[i
]);
j
++;
}
}
System
.out
.println(list
);
}
}
Vector
概述: 是List的一个实现类 数组实现,顺序存储,线程安全特有方法 addElement(Object object):添加元素 removeElement(Object object):删除元素 elements();获取集合的迭代对象,用于遍历
public class Test {
public static void main(String
[] args
) {
Test test
= new Test();
test
.arrayList();
test
.linkedList();
test
.vector();
}
public void arrayList(){
ArrayList list
= new ArrayList();
long start
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.add(0,i
);
}
long end
= System
.currentTimeMillis();
long start1
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.get(5000);
}
long end1
= System
.currentTimeMillis();
System
.out
.println("ArrayList insert:"+(end
-start
));
System
.out
.println("ArrayList get:"+(end1
-start1
));
}
public void linkedList(){
LinkedList list
= new LinkedList();
long start
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.addFirst(i
);
}
long end
= System
.currentTimeMillis();
long start1
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.get(5000);
}
long end1
= System
.currentTimeMillis();
System
.out
.println("LinkedList insert:"+(end
-start
));
System
.out
.println("LinkedList get:"+(end1
-start1
));
}
public void vector(){
Vector list
= new Vector();
long start
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.add(0,i
);
}
long end
= System
.currentTimeMillis();
long start1
= System
.currentTimeMillis();
for(int i
=0;i
<10000;i
++){
list
.get(5000);
}
long end1
= System
.currentTimeMillis();
System
.out
.println("Vector insert:"+(end
-start
));
System
.out
.println("Vector get:"+(end1
-start1
));
}
}