程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> java集合類

java集合類

編輯:JAVA綜合教程

java集合類


Collection類

集合可以理解為一個動態數組,集合中的對象可以任意擴充. 集合的特點:性能高;容易擴展。 Collection的常用子類有:List、Set、Map

一、List接口

list接口可以存放任意類型的數據,而且在List接口中內容可以重復。
List接口常用子類有:ArrayList、Vector。

1.1ArrayList

下面的Demo中展示了怎樣創建ArrayList對象、添加元素、訪問元素、移除元素。

package ucas.collection.demo;
import java.util.ArrayList;
import java.util.List;
public class ListDemo {
    public static void main(String[] args) {
        List lists = null;
        lists = new ArrayList();// list可重復
        // 添加
        lists.add("A");
        lists.add("B");
        lists.add("A");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
        System.out.println("判斷集合lists是否為空:"+lists.isEmpty());
        //返回第一次出現的位置
        System.out.println("A是否存在:"+lists.indexOf("A"));
        // 移除
        lists.remove(0);
        System.out.println("移除第一項以後:");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
    }
}

1.2Vector

Vector和ArrayList在使用上一樣,區別主要在於內部實現上的性能與是否是線程安全上:

比較項 ArrayList Vector 推出時間 jdk1.2 jdk1.0 處理方式 采用異步處理方式,性能高 采用同步處理方式,性能低 是否是線程安全 非線程安全 線程安全

VectorDemo

package ucas.collection.demo;

import java.util.List;
import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        // ArrayList jdk1.2之後推出,采用異步處理方式,性能高,屬於非線程安全;
        //Vector jdk1.0之後推出, 采用同步處理方式,性能低,屬於線程安全。
        //方法使用都一樣
        List lists = null;
        lists = new Vector();

        lists.add("A");
        lists.add("B");
        for (int i = 0; i < lists.size(); i++) {
            System.out.println(lists.get(i));
        }
    }
}

二、Set接口

Set接口中不可以加入重復元素,但是可以排序 。Set常用子類 有2個,散列存放使用HashSet ,有序存放使用TreeSet。

package ucas.collection.demo;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeSet;

public class SetDemo {
    public static void main(String[] args) {
        /*
         * Set接口中不可以加入重復元素,但是可以排序 Set常用子類 散列存放:HashSet 
         * 有序存放:TreeSet
         */

        Set s = null;
        s = new TreeSet();
        s.add("B");
        s.add("A");
        s.add("C");
        s.add("D");
        s.add("E");
        s.add("F");
        s.add("G");
        System.out.println(s);
    }
}

輸出:

[A, B, C, D, E, F, G]

HashSet:

package ucas.collection.demo;

import java.util.HashSet;
import java.util.Set;

public class HashSetDemo {
    public static void main(String[] args) {

          Set hs=new HashSet();
          hs.add("two");
          hs.add("one");
          hs.add("three");
          hs.add("four");
          hs.add("five");
          hs.add("six");
          System.out.println(hs);

    }
}

輸出

[six, four, one, two, three, five]

三、Map接口

Map接口采用key->value的方式保存
常用子類:
HashMap:無序存放,key值不允許重復
HashTable:無序存放,key值不允許重復

package ucas.collection.demo;

import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class MapDemo01 {
    public static void main(String[] args) {

        Map map = new HashMap();
        map.put("key1", "java進階1");
        map.put("key2", "java進階2");
        map.put("key3", "java進階3");
        map.put("key4", "java進階4");
        map.put("key5", "java進階5");
        map.put("key6", "java進階6");

        System.out.println(map.get("key1"));

        // 判斷key值是否存在
        if (map.containsKey("key12")) {
            System.out.println("key存在");
        } else {
            System.out.println("key不存在");
        }

        // 判斷value是否存在

        if (map.containsValue("java進階5")) {
            System.out.println("value值存在");
        } else {
            System.out.println("value值不存在");
        }

        // Iterator循環輸出
        System.out.println(map.keySet());

        Set s = map.keySet();
        Iterator iter = s.iterator();
        while (iter.hasNext()) {
            System.out.println(iter.next());
        }

        // 獲取全部值

        Collection c = map.values();
        Iterator iter2 = c.iterator();
        while (iter2.hasNext()) {
            System.out.println(iter2.next());
        }
    }
}

Iterator

Iterator用於迭代輸出集合中的元素,迭代輸出就是將元素一個一個進行判斷,判斷有內容則把內容取出。
這裡寫圖片描述

package ucas.collection.demo;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class IteratorDemo {
    public static void main(String[] args) {
        List lists = new ArrayList();

        lists.add("Q");
        lists.add("W");
        lists.add("E");
        lists.add("A");
        lists.add("B");
        Iterator iter = lists.iterator();
        while (iter.hasNext()) {
            // lists.remove(1);Iterator迭代輸出集合的過程中不能刪除元素,否則會出現錯誤
            System.out.println(iter.next());
        }

    }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved