Java-集合-list

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)系

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容