java中的集合: 是一種工具類,就像是容器,存儲任意數量的具備共同屬性的對象
集合的做用java
1. 在類的內部,對數據進行組織 2. 簡單而快速的搜索大量數目的條目 3. 有的集合接口,提供了一系列排列有序的元素,而且能夠在序列中進行快速的插入和刪除 4. 有些集合接口,提供了映射關係,能夠經過關鍵字key去快速的查找到對應的惟一對象
集合和數組的區別數組
1. 數組的長度是固定的,可是集合可變 2. 數組只能經過數組下標查找,類型固定,而有的集合能夠經過任意類型查找所映射的對象
Collection接口 是List、Set、Queue的父接口,
List接口之ArrayList網絡
1. List是元素有序而且可重複的集合,被稱爲是序列 2. List能夠精準控制每一個元素的插入和刪除 3. ArrayList --數組序列,是一個重要實現類 4. ArrayList底層是數組實現的
ArrayList的增刪改查數據結構
package com.collection; import java.util.ArrayList; import java.util.Arrays; import java.util.Iterator; import java.util.List; /** * 備選課程類 * @author zjj * ArrayList的增刪改查 * */ public class ListTest { private List coursesList; // 備選課程列表 public ListTest() { this.coursesList = new ArrayList(); } public List getCoursesList() { return coursesList; } public void setCoursesList(List coursesList) { this.coursesList = coursesList; } // 添加課程 public void listAdd() { // 添加一個課程 course c1 = new course("1", "c語言"); coursesList.add(c1); course temp = (course)coursesList.get(0); System.out.println("添加了課程:"+temp.getId()+";"+temp.getName()); course cr2=new course("2","數據結構"); coursesList.add(0,cr2); course temp2=(course)coursesList.get(1); System.out.println("添加了課程:"+temp2.getId()+";"+temp2.getName()); /**course cr2=new course("2","C語言"); coursesList.add(4,cr2); 報錯,數組下標越界*/ // 添加一個數組進去 course [] course = {new course("3","離散"), new course("4","毛概")}; coursesList.addAll(Arrays.asList(course)); course temp3 = (course) coursesList.get(2); course temp4 = (course) coursesList.get(3); System.out.println("添加了課程:"+temp3.getId()+";"+temp3.getName()); System.out.println("添加了課程:"+temp4.getId()+";"+temp4.getName()); course [] course1 = {new course("5","網絡"), new course("6","信息")}; coursesList.addAll(2,Arrays.asList(course1)); course temp5 = (course) coursesList.get(2); course temp6 = (course) coursesList.get(3); System.out.println("添加了課程:"+temp5.getId()+";"+temp5.getName()); System.out.println("添加了課程:"+temp6.getId()+";"+temp6.getName()); } /** * for循環遍歷List */ public void testGet() { int len = coursesList.size(); // 獲取到ArrayList的長度 System.out.println("========================="); for(int i = 0; i < len; i++) { course temp = (course) coursesList.get(i); System.out.println("添加了課程:"+temp.getId()+";"+temp.getName()); } } /** * 經過迭代器來遍歷List */ public void Listget() { Iterator it = coursesList.iterator(); // 迭代器方法 System.out.println("==========迭代器==============="); while(it.hasNext()) { course lt = (course) it.next(); System.out.println("添加了課程:"+lt.getId()+";"+lt.getName()); } } /** * 經過foreach遍歷 */ public void testForEach() { System.out.println("==========forEach循環==============="); for(Object obj :coursesList) { course cr = (course) obj; System.out.println("添加了課程:"+cr.getId()+";"+cr.getName()); } } /** * 修改課程 */ public void modify() { coursesList.set(2, new course("10", "修改的name")); } /** * 刪除課程 */ public void delete() { course cr = (course) coursesList.get(4); coursesList.remove(cr); // coursesList.remove(4); 效果同上 // 同時刪除多個 course [] courses = {(course) coursesList.get(1), (course) coursesList.get(2)}; coursesList.removeAll(Arrays.asList(courses)); } }
泛型管理框架
1.集合中的元素是能夠是任意類型的對象,若是把這個對象放入集合,則會忽略它的類別,而把他看成是一個Object來處理,這也就是咱們爲何須要進行強制類型轉換爲course的緣由了工具
2.泛型則是規定了某一個集合中只能存放某些特定類型的對象,會在編譯期間進行類型檢查,能夠直接按照指定的類型獲取元素測試
package com.collection; import java.util.ArrayList; import java.util.List; /** * 測試泛型 * @author zjj * */ public class testGeneric { // 泛型就是在<>中寫明規定的類型 public List<course> courseList; public testGeneric() { this.courseList = new ArrayList<course>(); } public void add () { course c = new course("1","語文"); courseList.add(c); } public void forEach() { // 注意這裏,咱們能夠直接使用course,不須要先寫成Object,再強轉 for(course c: courseList) { System.out.println("課程:" +c.getId()+";"+c.getName()); } } public static void main(String [] args) { testGeneric d = new testGeneric(); d.add(); d.forEach(); } }