集合
概述 集合是对象类型的数组 是为了解决数组的长度无法改变的问题,而出现 集合和数组的区别 共同点: 都是存储数据的容器 不同点:
存储内容不同: 数组可以存储基本数据类型,也可以存储引用数据类型 集合只能存储引用数据类型,如果需要存储基本数据类型,存储的是包装类对象 存储数量不同 数组长度不可变,一旦确定大小就不可改变 集合长度可变 方法不同 数组只有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 ( 1000000000000 L) ) ;
News news2 = new News ( "No2" , "News02" , new Date ( 2000000000000 L) ) ;
News news3 = new News ( "No3" , "News03" , new Date ( 3000000000000 L) ) ;
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 ( 1000000000000 L) ) ;
News news2 = new News ( "No2" , "News02" , new Date ( 2000000000000 L) ) ;
News news3 = new News ( "No3" , "News03" , new Date ( 3000000000000 L) ) ;
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) ) ;
}
}