-一種容器,存儲任意數量具有共同屬性的對象。
-容量在運行時可以動態擴展 -在類的內部,對數據進行組織。 -簡單而快速的搜索大數量的條目。 -有的集合接口,提供了一系列排列有序的元素,并且可以在序列中間快速的插入或者刪除有關的元素。 -有的集合接口,提供了映射關系,可以通過關鍵字(key)去快速找到對應的唯一對象,而這個關鍵字可以使任意類型。
-數組長度固定,集合長度可變。 -數組只能通過下標訪問元素,類型固定,而有的集合可以通過任意類型查找所映射的具體對象。
-集合中的元素,可以是任意類型的對象(對象的引用) -泛型則是規定了某個集合只能存放特定類型的對象 -泛型集合可添加泛型子類型的實例對象 -泛型集合中的限定類型不能使用基本的數據類型 -可以通過使用包裝類限定允許存入的基本數據類型
-Lsit
存儲元素排列有序,并且可重復
-Queue
存儲元素排列有序,并且可重復
-Set
無序且不可重復


-List是元素有序并且可以重復的集合,被稱為序列 -List可以精確控制每個元素的插入位置,或刪除某個元素 -ArrayList——數組序列,是List一個重要實現類 -ArrayList底層由數組實現
1/數據結構 2/C語言 3/離散數學 4/匯編語言 5/高等數學 5/大學英語 調用set 調用get方法 2/C語言 1/Java 5/高等數學 6/大學英語 3/離散數學 4/匯編語言 通過迭代器訪問 2/C語言 1/Java 5/高等數學 6/大學英語 3/離散數學 4/匯編語言 調用foreach 2/C語言 1/Java 5/高等數學 6/大學英語 3/離散數學 4/匯編語言 按對象刪除3/離散數學 按位置刪除4/匯編語言 采用removeAll的方法刪除1,2位置 調用foreach 5/高等數學 6/大學英語
-Set是元素無序并且不可以重復的集合,被稱為集 -HashSet——哈希集,是Set重要的實現類 -循環遍歷Set只能用foreach或者iterator -Set中添加某個對象無論多少次,都只會保留第一次添加的那個 -Set可以添加空對象
鏈接與圖片 代碼塊 分割線與刪除線 代碼塊與語法高亮 在需要高亮的代碼塊的前一行及后一行使用三個反引號“`”,同時第一行反引號后面表面代碼塊所使用的語言,如下:
public class SetTest { private List<Course> listCourses; public SetTest(List<Course> listCourses) { super(); this.listCourses = listCourses; } // 用于向課程集合中添加被選課程 public void add() { Course course1 = new Course("1", "數據結構"); listCourses.add(course1); Course temp = listCourses.get(0); System.out.println(temp.getId() + "/" + temp.getName()); Course course2 = new Course("2", "C語言"); /* * 在可以訪問的位置中插入數據,之前相應的數據位置往后移動一位 目前可訪問的位置為0 若試圖訪問其他位置則會發生數組下標越界異常 */ listCourses.add(0, course2); Course temp2 = listCourses.get(0); System.out.println(temp2.getId() + "/" + temp2.getName()); // 一次添加多個元素 Course[] courses = { new Course("3", "離散數學"), new Course("4", "匯編語言") }; // asList將數組轉換為集合 listCourses.addAll(Arrays.asList(courses)); Course temp3 = listCourses.get(2); System.out.println(temp3.getId() + "/" + temp3.getName()); Course temp4 = listCourses.get(3); System.out.println(temp4.getId() + "/" + temp4.getName()); Course[] courses2 = { new Course("5", "高等數學"), new Course("6", "大學英語") }; // 新添加的兩門課程從2處插入 listCourses.addAll(2, Arrays.asList(courses2)); Course temp5 = listCourses.get(2); System.out.println(temp5.getId() + "/" + temp5.getName()); Course temp6 = listCourses.get(3); System.out.println(temp5.getId() + "/" + temp6.getName()); } // 通過foreach遍歷List public void foreach() { System.out.println("調用foreach"); for (Course course : listCourses) { System.out.println(course.getId() + "/" + course.getName()); } } // foreach輸出所選課程 public void StudentForeach(Student student){ // 輸出學生所選課程,輸出順序不固定 for (Course course : student.getCourses()) { System.out.println(course.getId()+"/"+course.getName()); } } public static void main(String[] args) { List<Course> list = new ArrayList<Course>(); ListTest listCourses = new ListTest(list); SetTest setTest = new SetTest(list); setTest.add(); setTest.foreach(); // 創建一個學生對象 Set<Course> courses = new HashSet<Course>(); Student student = new Student("1","小明",courses); // 獲取鍵盤輸入的課程ID Scanner scanner = new Scanner(System.in); for (int i = 0; i < 3; i++) { System.out.println("請輸入課程ID"); String id = scanner.next(); for (Course course : setTest.listCourses) { if(course.getId().equals(id)){ student.getCourses().add(course); } } } setTest.StudentForeach(student); }}1/數據結構 2/C語言 3/離散數學 4/匯編語言 5/高等數學 5/大學英語 調用foreach 2/C語言 1/數據結構 5/高等數學 6/大學英語 3/離散數學 4/匯編語言 請輸入課程ID 1 請輸入課程ID 2 請輸入課程ID 3 3/離散數學 2/C語言 1/數據結構
新聞熱點
疑難解答