1. 程式人生 > >JAVA集合框架Collection介面和Map介面主要知識總結

JAVA集合框架Collection介面和Map介面主要知識總結



Java集合框架下有兩個重要的介面,一個是Collection介面,一個是Map介面。

一、Collection介面

Collection介面中又有三個子介面,分別是List(序列)Queue(佇列)Set(), 其中常用的有ListSet

ListQueue集合中元素是有序的並且是可以重複的,而Set集合中元素是無序且不可重複的;

List介面中有兩個常見的實現類,分別是ArrayList實現類和LinkedList實現類,而LinkedList同時也是Queue的實現類,Set介面的實現類是HashSet

ArrayList實現類中提供了許多方法用來對List集合元素實現增刪改查的目的。

(HashSet實現類的方法與ArrayList類似,這裡以ArrayList為例簡要介紹)

以學生選課為例:(簡寫程式碼)

首先定義一個Course類:

publicclass Course;

再定義一個List集合,用以盛裝Course型別的物件

public List<Course> CoursesToSelect;

<>裡面的內容是泛型,表明集合中儲存的元素是該型別,本例中的泛型就是Course型別的;

ArrayList中的addaddAll方法都可以往集合中新增元素

Course cr1 = new Course("1", "大學英語");

CoursesToSelect

.add(cr1);

Course cr2 = new Course("2", "大學物理");

CoursesToSelect.add(0, cr2);0是所要新增元素的索引位置

Course[] course = { new Course("3", "高等數學"), new Course("3", "離散數學") };

CoursesToSelect.addAll(Arrays.asList(course));

ArrayList中的RemoveRemoveAll方法都可以實現刪除集合中的元素

publicvoid testRemove() {

Course cr = CoursesToSelect

.get(1);

CoursesToSelect.remove(cr);

}

publicvoid testRemoveAll() {

Course[] cr = { (Course) CoursesToSelect.get(1), (Course) CoursesToSelect.get(2) };

CoursesToSelect.removeAll(Arrays.asList(cr));

}

ArrayList中的set方法可以修改集合中的元素

publicvoid testModify() {

CoursesToSelect.set(2, new Course("4", "毛概"));

}

ArrayList中可以有多種方法可以查詢集合中的所有元素

<方法1>publicvoid testshow() {

intsize = CoursesToSelect.size();

System.out.println("有如下課程備選:");

for (inti = 0; i < size; i++) {

Course temp1 = CoursesToSelect.get(i);

System.out.println(temp1.getId() + ":" + temp1.getName());

}

}

/**

 * 通過迭代器訪問CoursesToSelect Iterator實際上是一個介面

 */

<方法2>publicvoid testIterator() {

Iterator<Course> it = CoursesToSelect.iterator();

System.out.println("通過迭代器訪問:");

while (it.hasNext()) {

Course cr =  it.next();

System.out.println(cr.getId() + ":" + cr.getName());

}

}

/**

 * 通過ForEach遍歷集合元素

 */

<方法3>publicvoid testforeach() {

System.out.println("通過foreach訪問");

for (Course obj : CoursesToSelect) {

System.out.println(obj.getId() + ":" + obj.getName());

}

}

  <方法4>publicvoid testListContains() {

Course course=CoursesToSelect.get(0);

  System.out.println("已經取得課程:"+course.getName());

  System.out.println("備選課程中是否包含課程"+course.getName()+","+CoursesToSelect.contains(course));

二、Map介面

Map介面的實現類是HashMap,它裡面的元素(無序排列)Entry型別的物件例項,也就是鍵值對<key,value>,類似與數學函式裡的對映關係。元素的key值是不可以重複的,一個key值對應一個value值,但是一個value值可以對應多個Key值。

首先定義一個學生類:

publicclass Student

再定義一個Map集合,用以盛裝Student型別的物件:

public Map<String,Student> students;

HashSet中的put方法可以實現往集合中新增元素

students.put(stuId, student);

HashSet中的Remove方法可以實現刪除集合中的元素

students.remove(ID);

HashSet中的put方法可以修改集合中的元素

publicvoid testModify(){

while(true){

System.out.println("請輸入要修改的學生ID");

String ID=scan.next();

Student st=students.get(ID);

if(st!=null){

System.out.println("請輸入要修改的學生姓名:");

String name=scan.next();

Student newStudent=new Student(ID,name);

students.put(ID, newStudent);

break;

}

else{

System.out.println("該學生ID不存在,請重新輸入!");

continue;

}

}

}

HashSet中可以有多種方法可以查詢集合中的所有元素

<方法1>publicvoid testkeySet(){

Set<String>keySet=students.keySet();

System.out.println("已新增"+students.size()+"學生:");

for(String stuid:keySet){

Student st=students.get(stuid);

if(st!=null){

System.out.println("學生:"+st.getName());

}

}

}

<方法2>publicvoid testEntrySet(){

Set<Entry<String, Student>> entrySet=students.entrySet();

for(Entry<String, Student> entry:entrySet){

System.out.println("取得鍵:"+entry.getKey());

System.out.println("對應的值:"+entry.getValue().getName());

}

}

對某個序列進行排序,那麼這個序列中的元素必須實現Comparable介面,Comparable介面採用的是預設的比較規則,其實現類必須實現compareTo()方法,而Comparator介面採用的是臨時的比較規則,其實現類必須實現compare()方法。