JAVA學習之路 (十)集合

集合

java中的集合: 是一種工具類,就像是容器,存儲任意數量的具備共同屬性的對象

集合的做用java

1. 在類的內部,對數據進行組織
2. 簡單而快速的搜索大量數目的條目
3. 有的集合接口,提供了一系列排列有序的元素,而且能夠在序列中進行快速的插入和刪除
4. 有些集合接口,提供了映射關係,能夠經過關鍵字key去快速的查找到對應的惟一對象

集合和數組的區別數組

1. 數組的長度是固定的,可是集合可變
2. 數組只能經過數組下標查找,類型固定,而有的集合能夠經過任意類型查找所映射的對象

java集合的框架

clipboard.png

Collection 接口

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();
    }
}
相關文章
相關標籤/搜索