Java -- 集合類

Java – 集合類

Collection

Collection

Collection是最基本的集合接口,一個Collection代表一組Object,即Collection的元素(Elements)。Java SDK不提供直接繼承自Collection的類,Java SDK提供的類都是繼承自Collection子接口ListSet

Map

Map

Map 提供了一個更通用的元素存儲方法。 Map 集合類用於存儲元素對(稱作),其中每個映射到一個

整理對比

是否有序 是否允許元素重複
List ArrayList
LinkedList
Set HashSet
TreeSet
LinkedHashSet
Map HashMap
TreeMap
LinkedHashMap
IdentityHashMap
WeakHashMap

HashMapHashtable

HashMap Hashtable
版本 since jdk1.1 since jdk1.2
是否支持 Null Key & Null Value
默認的初始大小 11 16
擴充公式 2n+1 2n
線程安全

注:Hashtable中的t是小寫的,不是大寫的

注:JDK 1.8 中使用了紅黑樹來存儲,從而大大加速了其查找效率。

注:如果需要線程安全,那麼使用ConcurrentHashMapHashTable已經被淘汰了,不要在新的代碼中再使用它。

ArrayListLinkedList

ArrayList LinkedList
數據結構 動態數組 鏈表
默認的初始大小 10 -
擴充公式 n+n/2 + 1 -

ArrayList的存儲結構是數組,所以在數組末尾添加一個元素的開銷是固定的。

LinkedList的存儲結構是鏈表,所以在鏈表中插入或者刪除一個元素的開銷是固定的。

因此,ArrayList更適合查找,LinkedList更適合增刪改運算。

操作

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import com.ven.java8.method.references.CreateFactory;

/**
 * 測試使用java8 操作List/Map
 *
 */
public class TestCollections {
    public static void main(String[] args) {
        // 操作Map部分
        Map<String, Integer> items = new LinkedHashMap<>();
        items.put("Name1", 10);
        items.put("Name2", 20);
        items.put("Name3", 30);
        items.put("Name4", 40);
        items.put("Name5", 50);
        items.put("Name6", 60);
        for (Map.Entry<String, Integer> entry : items.entrySet()) {
            System.err.println("使用java8之前的版本    姓名 : " + entry.getKey() + " 分數 : " + entry.getValue());
        }

        //java8版本
        items.forEach((k,v)->{
            System.err.println("使用java8循環 /姓名 : " +k + " 分數 : " + v);
            });

        items.forEach((k,v)->{
            if(k.equals("Name2")){
                System.out.println("hello "+k);
            }
        });

        System.out.println("------分割線-----");

        //操作List部分
        List<User> itemsList = new ArrayList<>();
        User user1 =CreateFactory.create(User::new);
        user1.setId("1");
        user1.setUserName("Name4");
        user1.setAge("12");
        itemsList.add(user1);
        User user2 =CreateFactory.create(User::new);
        user2.setId("2");
        user2.setUserName("Name5");
        user2.setAge("23");
        itemsList.add(user2);
        for(User item : itemsList){
            System.out.println(item.getId()+"-"+item.getUserName()+"-"+item.getAge());
        }

        System.out.println("------分割線-----");

        //java8版本
        itemsList.forEach(item->{
            System.out.println(item.getUserName());
        });

        //條件過濾
        itemsList.forEach(item->{
            String userName = item.getUserName();
            if(userName.equals("Name2")){
                System.out.println("大家好我是"+userName);
            }
        });

        //方法的引用
        itemsList.forEach(System.out::println);

        //stream and filter
        itemsList.stream().filter(itemuser->itemuser.getUserName().equals("Name6")).forEach(item ->{
            System.out.println("...........split........");
            System.err.println(item.getUserName());
        });
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章