JAVA集合框架Collection介面和Map介面主要知識總結
Java集合框架下有兩個重要的介面,一個是Collection介面,一個是Map介面。
一、Collection介面
Collection介面中又有三個子介面,分別是List(序列),Queue(佇列),Set(集), 其中常用的有List和Set;
List和Queue集合中元素是有序的並且是可以重複的,而Set集合中元素是無序且不可重複的;
List介面中有兩個常見的實現類,分別是ArrayList實現類和LinkedList實現類,而LinkedList同時也是Queue的實現類,Set介面的實現類是HashSet。
ArrayList實現類中提供了許多方法用來對List集合元素實現增刪改查的目的。
以學生選課為例:(簡寫程式碼)
首先定義一個Course類:
publicclass Course;
再定義一個List集合,用以盛裝Course型別的物件
public List<Course> CoursesToSelect;
“<>”裡面的內容是泛型,表明集合中儲存的元素是該型別,本例中的泛型就是Course型別的;
增:ArrayList中的add,addAll方法都可以往集合中新增元素
Course cr1 = new Course("1", "大學英語");
CoursesToSelect
Course cr2 = new Course("2", "大學物理");
CoursesToSelect.add(0, cr2);(“0”是所要新增元素的索引位置)
Course[] course = { new Course("3", "高等數學"), new Course("3", "離散數學") };
CoursesToSelect.addAll(Arrays.asList(course));
刪:ArrayList中的Remove,RemoveAll方法都可以實現刪除集合中的元素
publicvoid testRemove() {
Course cr = CoursesToSelect
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()方法。