java中的集合框架List接口

集合概述:
1、集合概念:java中的集合類:是一種工具類,就像是容器,存儲任意數量的具有共同屬性的對象
2、集合的作用:1、在類的內部,對數據進行組織;2、簡單而快速的搜索大數量的條目;3、有的集合接口,提供了一系列排列有序的元素,並且可以在序列中間快速的插入或者刪除有關的元素;有的集合接口,提供了映射關係,可以通過關鍵字(key)去快速查找到對應的唯一對象,而這個關鍵字可以是任意類型。
3、集合與數組的區別:1、數組的長度固定,集合長度可變;2、數組只能通過下標訪問元素,類型固定,而有的集合可以通過任意類型查找所映射的具體對象

1.數組容量固定 集合可以動態擴展

數組只能通過數組下標 只能通過遍歷 集合有映射關係 可以方便查找.


Java集合框架兩大根接口:Collection 和 Map

Collection子接口:List Queue Set List(序列)&queue(隊列)可重複有序 Set(集)無序不可重複

List——ArrayList ——LinkedList

Queue——LinkedList

Set——HashSet

Map——HashMap哈希表

二、List接口的實現類:ArrayList
1、List是元素【有序並且可以重複】的序列,稱爲序列
2、***List可以精確的控制每個元素的插入位置,或者刪除某個位置的元素——操作和位置有關
3、ArrayList——數組序列,是List的一個重要實現類

4.可以實現學生選課系統

list 類型是接口,不能把類直接實例化,需要調用list 的實現類Arraylist 去實現

public class ListTest {
public List CoursesToselect; //就像 public int stuNum;
public ListTest(){
/**
* 用於存放已選課程的list
*/
this.CoursesToselect=new ArrayList();
}

}

list 元素的起始位置爲0 get(0)

對象存入集合都變成Object類型,不是原來的類型,取出時需要類型轉換

add 可以指定元素添加的位置

add 傳進去的參數不能大於它的位置長度

選課容器

package com.imooc;


import java.util.ArrayList;
import java.util.List;


public class ListTest {
public List CoursesToselect;
public ListTest(){
/**
* 用於存放備選課程的list,有了容器,就要往裏面添加課程了。 用testAdd()方法
*/
this.CoursesToselect=new ArrayList();
}
/**
* 用於往CoursesToselect中添加備選課程 
*/
public void testAdd(){
Course cr1=new Course("1","化學"); //課程對象的實例
CoursesToselect.add(cr1);//通過調用add方法添加到備選課程List中
Course temp=(Course) CoursesToselect.get(0);//對象存入集合都變成Object類型,取出時需要類型轉換,get 方法取得添加的課程
System.out.println("添加了課程 \t"+temp.id+":"+temp.name);

Course cr2=new Course("2","物理");
CoursesToselect.add(0, cr2);
Course temp2=(Course) CoursesToselect.get(0);
System.out.println("添加了課程 \t"+temp2.id+":"+temp2.name);

Course cr3=new Course("3","生物");
CoursesToselect.add(4, cr3);//長度爲2,4>2,下標越界異常
}
public static void main(String[] args) {
ListTest lt=new ListTest();
lt.testAdd();
}
}

往list中添加元素(4種方法)

add

Course cr1=new Course("1","化學"); //課程對象的實例
CoursesToselect.add(cr1);//通過調用add方法添加到備選課程List中
Course temp=(Course) CoursesToselect.get(0);//對象存入集合都變成Object類型,取出時需要類型轉換,get 方法取得添加的課程
System.out.println("添加了課程 \t"+temp.id+":"+temp.name);

Course cr2=new Course("2","物理");
CoursesToselect.add(0, cr2);
Course temp2=(Course) CoursesToselect.get(0);
System.out.println("添加了課程 \t"+temp2.id+":"+temp2.name);

addAll

Course[]course=
{
new Course("3","離散數學"),
new Course("4","古代神話")
   };
CoursesToselect.addAll(Arrays.asList(course));
Course temp3=(Course) CoursesToselect.get(2);
Course temp4=(Course) CoursesToselect.get(3);
System.out.println("添加了兩門課程"+temp3.id+":"+temp3.name+";\n"+temp4.id+":"+temp4.name);

Course[]course2=
{
new Course("5","統計數學"),
new Course("6","歐洲神話愛情故事")
   };
CoursesToselect.addAll(2, Arrays.asList(course2));
Course temp5=(Course) CoursesToselect.get(2);
Course temp6=(Course) CoursesToselect.get(3);
System.out.println("添加了兩門課程"+temp5.id+":"+temp5.name+";\n"+temp6.id+":"+temp6.name);

把list中的元素取出來(get方法)

public void testGet(){
int size=CoursesToselect.size();//得到list的長度
System.out.println("有如下課程待選:");
for(int i=0;i<size;i++){
Course cr=(Course) CoursesToselect.get(i);
System.out.println("課程"+cr.id+":"+cr.name);
}
}

通過迭代器來遍歷list//迭代器遍歷集合中的元素,不具備存儲元素的功能

public void testIterator(){
Iterator it=CoursesToselect.iterator();//通過集合的iterator方法來獲取迭代器的實例
System.out.println("有如下課程待選(通過迭代器訪問)");
while(it.hasNext()){
Course cr=(Course) it.next();
System.out.println("課程"+cr.id+":"+cr.name);
}
}

 通過foreach方法訪問集合元素

public void testForeach(){
System.out.println("有如下課程待選(通過foreach方法訪問)");
for(Object obj:CoursesToselect){
Course cr=(Course) obj;
System.out.println("課程"+cr.id+":"+cr.name);
}
}

修改list中的元素

public void testModify(){
CoursesToselect.set(4, new Course("7","毛概"));
}

 刪除list中的元素

remove

public void testRemove(){
Course cr=(Course) CoursesToselect.get(4);
System.out.println("我是課程:"+cr.id+":"+cr.name+",我即將被刪除");
CoursesToselect.remove(cr);
System.out.println("成功刪除課程");
testForeach();
}


public void testRemove(){
System.out.println("即將刪除4位置上的課程");
CoursesToselect.remove(4);
System.out.println("成功刪除課程");
testForeach();
}

removeall

public void testRemove(){
System.out.println("即將刪除4位置和5位置上的課程");
Course []courses={(Course) CoursesToselect.get(4),(Course) CoursesToselect.get(5)};
CoursesToselect.removeAll(Arrays.asList(courses));
System.out.println("成功刪除");
testForeach();
}

集合中的元素可以是任意類型的對象,(對象的引用)

泛型——某個集合只可以存放特定類型的對象

帶有泛型的list——public List<Course> courses;

public class testGeneric {

public List<Course> courses;
public testGeneric(){
this.courses=new ArrayList<Course>();
}
public void testAdd(){
Course cr1=new Course("1","大學語文");
courses.add(cr1);
Course cr2=new Course("2","神話故事");
courses.add(cr2);
//courses.add("i am a person");
}
public void testForeach(){
for(Course cr:courses){
System.out.println(cr.id+":"+cr.name);
}

}
public static void main(String[] args) {
// TODO Auto-generated method stub
testGeneric tg =new testGeneric();
tg.testAdd();
tg.testForeach();
}


}


泛型不能使用基本類型,必須使用其包裝類

List<int> list=new Arraylist<int>();//錯的

List<Integer> list=new Arraylist<Integer>();//正確

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章