天天看點

集合類概述1

       java.util包中提供了一些集合,這些集合又被稱為容器。提到容器不難想到數組,集合與數組的不同之處時,數組的長度是固定的,集合的長度是可變的;數組用來存放基本資料類型的資料,集合用來存放對象的引用。常用的集合有:List集合,set集合和map集合,其中List集合與set集合繼承了Collection接口,各接口還提供了不同的實作類。

       Collection接口是層次結構中的根接口。構成Collection的機關稱為元素。Collection接口通常不能直接使用,但該接口提供了添加元素,删除元素,管理資料的方法。由于list接口與set接口都直接繼承了Collection接口,是以這些方法對List和set集合是通用的。

Collection接口

Collection接口的常用方法

方法                                 功能描述

add(E e)                        将制定的對象添加到各集合中

remove(Object o)         将制定的對象從該集合中移除

isEmpty()                       傳回Boolean值,用于判斷目前集合是否為空

iterator()                        傳回再次Collection的元素上進行疊代的疊代器。用于周遊集合中的對象

size()                              傳回int值,擷取該集合中的元素的個數

如何周遊集合中的每個元素呢》

通常周遊集合,都是通過疊代器(iterator)來實作。Collection接口中的iterator()方法可傳回在此Collection進行疊代的疊代器。  

public class Collection接口 {
    public static void main(String[] args) {
        Collection<String>list = new ArrayList<>();//執行個體化集合類對象
        list.add("a");
        list.add("b");
        list.add("c");
        Iterator<String>iterator = list.iterator();//建立疊代器
        while (iterator.hasNext()){//判斷是否有下一個元素
            String str = iterator.next();//擷取集合中的元素
            System.out.println(str);

        }
    }
}      
結果:
      
集合類概述1

List集合

List集合包括List接口以及List接口的所有實作類。List集合中的元素允許重複,各元素的順序就是對象插入的順序。類似java數組,使用者可通過使用索引(元素在集合中的位置)來通路集合中的元素。

List接口繼承了Collection接口,是以包含了Collection中的所有方法,是以,List接口還定義了以下兩個方法。

get(int index):擷取指定索引位置的元素

set(int index,Object obj):将集合中指定的索引位置的對象修改為指定的對象

List接口的常用實作類有ArrayList與LinkedList.

ArrayList類實作了可變的數組,允許儲存所有元素,包括null,并可以根據索引位置對集合進行快速的随機通路:缺點是向指定的索引位置插入對象或删除對象的速度較慢。

LinkedList類采用連結清單結構儲存對象。這種結構的優點是便于向集合中插入和删除對象,需要向集合中插入,删除對象時。使用LinkedList類實作的List集合的效率較高;但對于随機通路集合中的對象,使用LinkedList類實作的效率較低。

使用List集合時通常聲明為List類型,可通過不同的實作類來執行個體化集合。

public class List集合 {
    public static void main(String[] args) {
        List<String>list = new ArrayList<>();//建立集合對象
        list.add("a");
        list.add("b");
        list.add("c");
        int i = (int)(Math.random()*(list.size()-1));//獲得0-2之間的随機數
        System.out.println("随機擷取數組中的數:"+list.get(i));
        list.remove(2);//将指定索引位置的元素從集合中移除
        System.out.println("移除後數組中的元素:");
        for (int j = 0;j<list.size();j++){
            System.out.println(list.get(j));
        }
    }
}      
結構: