1.集合(實(shí)現(xiàn)功能較多,數(shù)據(jù)的集合)Collection
集合:不定長(zhǎng)的同一類數(shù)據(jù)的集合 ? ?
優(yōu)點(diǎn):可以自動(dòng)擴(kuò)容
*****數(shù)組不可以擴(kuò)容




package com.neusoft.test7;
import java.util.Arrays;
public class Test1 {
public static void main(String[] args) {
//數(shù)組 ? 同一數(shù)據(jù)類型的數(shù)據(jù)集合,定長(zhǎng)
// TODO Auto-generated method stub
//數(shù)組裝載多個(gè)數(shù)據(jù)
//數(shù)組是定長(zhǎng)的? 不能自動(dòng)擴(kuò)容
//*****? 所謂的數(shù)組擴(kuò)容其實(shí)就是 新分配一塊內(nèi)存地址
int[] a= {12,23,2,54,16};
System.out.println("old"+a.length);
System.out.println("old"+a);
int[] b=new int[5];//{0,0,0,0,0}
// System.out.println(b.length);
a=Arrays.copyOf(a, 10);
System.out.println("new"+a.length);
System.out.println("new"+a);
//數(shù)組中的拷貝方法? 不能實(shí)現(xiàn)擴(kuò)容
//a 是源數(shù)組? 0? 是源數(shù)組的開始位置? b 是目標(biāo)數(shù)組? 0 是目標(biāo)數(shù)組的開始位置? 5 是元素拷貝個(gè)數(shù)
// System.arraycopy(a, 0, b, 1, 4);//把a(bǔ)數(shù)組拷貝到b數(shù)組
// for(int n:a) {
// System.out.println(n);
// }
// for(int n:b) {
// System.out.println(n);
// }?
}
}


package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Collection;
public class Test2 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Collection c1=new ArrayList();//集合可以自動(dòng)擴(kuò)容
//因?yàn)椋篛bject 是所有類的超類?
//所以:Object 也是包裝數(shù)據(jù)類型的超類
//因?yàn)椋夯緮?shù)據(jù)類型可以自動(dòng)裝箱
//所以:int 10------>integer 數(shù)據(jù)類型的10
//又因?yàn)椋篛bject 也是包裝數(shù)據(jù)類型的超類
//所以:integer 10 相當(dāng)于變?yōu)榱? Object類型的父類引用指向子類對(duì)象的形式
//在所以:10可以放到方法當(dāng)中的參數(shù)當(dāng)中
c1.add(10);//Object
c1.add(20);
c1.add(30);
c1.add(40);
c1.add(50);
c1.add(60);
c1.add(70);
c1.add(80);
c1.add(90);
System.out.println("c1.size()="+c1.size());//長(zhǎng)度
Object[] o1arry=c1.toArray();
//遍歷object 集合
for(Object o:o1arry) {
//在System.out.println當(dāng)中輸出一個(gè)類相當(dāng)于自動(dòng)調(diào)用類當(dāng)中的toString方法
//因?yàn)橛辛烁割愐弥赶蜃宇悓?duì)象的形式? Object o=new Integer();
//所以? 調(diào)用toString方法時(shí)發(fā)生重寫 實(shí)際調(diào)用的是Integer當(dāng)中的toString方法? 即輸出了o
System.out.println(o);
}
Object o1=new Object();
//輸出類名及地址值
System.out.println(o1);// 地址值
}
}

2.list 接口
優(yōu)點(diǎn):有序,可重復(fù)


package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//list 接口 <> 泛型 存取順序一致------有序? 可重復(fù)?
List<String> list1=new ArrayList<String>();//父類的引用指向子類對(duì)象? :多態(tài)
list1.add("古天樂(lè)");//0? *********** 增加新元素
list1.add("渣渣輝");//1
list1.add("陳小春");//2
list1.add("劉燁");//3
list1.add("劉燁");
list1.add("劉燁");
list1.add("劉燁");
list1.add("孫紅雷");//4
list1.add("林子聰");//5
list1.remove(1);//*********************刪除
list1.set(1, "哈哈哈");//*******根據(jù)下標(biāo)進(jìn)行修改
System.out.println(list1.indexOf("哈哈哈"));//******查詢? 第一次出現(xiàn)的指定元素的索引
// System.out.println(list1);
//如何遍歷集合
//1.list集合轉(zhuǎn)為數(shù)組? 再遍歷數(shù)組
Object[] o=list1.toArray();//把集合變成數(shù)組
for(Object n:o) {
System.out.println(n);
}
System.out.println("*****************");
//2.使用迭代器(遍歷器) 進(jìn)行遍歷輸出 *****常用
Iterator<String> i1=list1.iterator();
while(i1.hasNext()) {//hasNext 判斷但不移動(dòng)指針
String a=i1.next();//next 移動(dòng)指針
System.out.println(a);
}
//數(shù)組要有統(tǒng)一的數(shù)據(jù)類型
// ? ? Integer[] a=new Integer[10];//包裝數(shù)據(jù)類型
// ? ? String[] b=new String[10];//引用數(shù)據(jù)類型
// ? ? a[0]=1;
// ? ? b[0]="aaa";
// ? ? System.out.println(a[0]);
// ? ? System.out.println(b[0]);
// ? ? //int ---->String
// ? ? b[0]=1+"";
// ? ? Object[] c=new Object[10];
// ? ? c[0]=111;
// ? ? c[1]="aaa";
// ? ? System.out.println(c[0]);
// ? ? System.out.println(c[1]);
}
}


package com.neusoft.test7;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class Test3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
//list 接口? ? <> 泛型? 存取順序一致------有序? ? ? 可重復(fù)
List<String> list1=new ArrayList<String>();//父類的引用指向子類對(duì)象:多態(tài)
list1.add("古天樂(lè)");//0? *********** 增加新元素
list1.add("渣渣輝");//1
list1.add("陳小春");//2
list1.add("劉燁");//3
list1.add("劉燁");
list1.add("劉燁");
list1.add("劉燁");
list1.add("孫紅雷");//4
list1.add("林子聰");//5
list1.remove(1);//*********************刪除
list1.set(1, "哈哈哈");//*******根據(jù)下標(biāo)進(jìn)行修改
System.out.println(list1.indexOf("哈哈哈"));//******查詢? 第一次出現(xiàn)的指定元素的索引
// System.out.println(list1);
//如何遍歷集合
//1.list集合轉(zhuǎn)為數(shù)組? 再遍歷數(shù)組
Object[] o=list1.toArray();//把集合變成數(shù)組
for(Object n:o) {
System.out.println(n);
}
System.out.println("*****************");
//2.使用迭代器(遍歷器) 進(jìn)行遍歷輸出? ? *****常用? ? listIterator與Iterator區(qū)別
ListIterator<String> i1=list1.listIterator();
while(i1.hasNext()) {//hasNext 判斷但不移動(dòng)指針
// list1.add("新增");? //當(dāng)前更改異常? 報(bào)錯(cuò)? ***a.在迭代器迭代的時(shí)候? 不能通過(guò)list1來(lái)修改數(shù)據(jù)
// list1.remove(1);? //當(dāng)前更改異常? 報(bào)錯(cuò)
String a=i1.next();//next 移動(dòng)指針
if(a=="孫紅雷") {
// i1.remove();? ? //b.使用迭代器來(lái)進(jìn)行刪除操作
i1.add("韓紅");? //c.Iterator? 沒(méi)有add方法? 在操作list集合時(shí)想要使用add方法需要使用ListIterator
}
System.out.println(a);
}
System.out.println(list1);
//數(shù)組要有統(tǒng)一的數(shù)據(jù)類型
// ? ? Integer[] a=new Integer[10];//包裝數(shù)據(jù)類型
// ? ? String[] b=new String[10];//引用數(shù)據(jù)類型
// ? ? a[0]=1;
// ? ? b[0]="aaa";
// ? ? System.out.println(a[0]);
// ? ? System.out.println(b[0]);
// ? ? //int ---->String
// ? ? b[0]=1+""; ? ?
// ? ? Object[] c=new Object[10];
// ? ? c[0]=111;
// ? ? c[1]="aaa";
// ? ? System.out.println(c[0]);
// ? ? System.out.println(c[1]);
}
}

3.LinkedList(鏈表結(jié)構(gòu) ? 雙鏈表形式)
arraylist(數(shù)組結(jié)構(gòu)) 初始值分配空間為10 ? 如果裝滿的話則按照1.5倍進(jìn)行擴(kuò)容 ?
arraylist 查找快? ,增刪慢
linkedlist查找慢? ,增刪快



package com.neusoft.test7;
import java.util.Iterator;
import java.util.LinkedList;
import javax.annotation.processing.SupportedSourceVersion;
public class Test4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList list1=new LinkedList();
// list1.add("古天樂(lè)");
// list1.add("渣渣輝");
// list1.add("陳小春");
// list1.add("劉燁");
// list1.add("劉燁");
// list1.add("劉燁");
// list1.add("劉燁");
// list1.add("孫紅雷");
// list1.add("林子聰");
list1.push("aaa");//push 入棧
list1.push("bbb");
list1.pop();//pop 出棧
list1.push("ccc");
list1.push("ddd");
list1.pop();
// System.out.println(list1.getLast());
// list1.pop();
// list1.pop();
Iterator i1=list1.iterator();
while(i1.hasNext()) {
System.out.println(i1.next());
}
}
}


//封裝一個(gè)方法? ? 用棧? 實(shí)現(xiàn)? 隊(duì)列的功能
package com.neusoft.test7;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class Test5 {
LinkedList list1=new LinkedList();
LinkedList list2=new LinkedList();
public static void main(String[] args) {
// TODO Auto-generated method stub
Test5 t=new Test5();
t.put("aaa");
t.put("bbb");
t.put("ccc");
System.out.println(t.get());
System.out.println(t.get());
System.out.println(t.get());
System.out.println(t.get());
}
public void put (Object o) {//向list1棧? push元素
list1.push(o);
}
public Object get() {
for(int i=0;!isEmpty(list1);i++) {
list2.push(list1.pop());
}
if(!isEmpty(list2)) {
return list2.pop();
}else {
return "對(duì)不起,已經(jīng)空了?。?!";
}
}
//判斷l(xiāng)ist 是否為空的方法 如果為空返回true? 如果不為空返回false
public boolean isEmpty(List list) {
if(list.size()<=0) {
return true;//為空
}else {
return false;//不為空
}
}
}

4.Iterator接口方法(遍歷集合)


5.Vector(與Arraylist相似)
*****也具有Iterator方法
package com.neusoft.test7;
import java.util.Enumeration;
import java.util.Vector;
public class Test6 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Vector<String> v=new Vector<String>();
v.addElement("aaa");
v.addElement("bbb");
v.addElement("ccc");
Enumeration<String> e=v.elements();//枚舉類
while(e.hasMoreElements()) {
String s=e.nextElement();
System.out.println(s);
}
}
}

6.Collections類(操作集合的類 ,該類中提供許多方法,集合的工具類)
?collections與collection沒(méi)有任何關(guān)系
