Java常用集合——Map & List & Set

概述:

Java集合主要由兩個接口派生而出,分別是Collection和Map,它們是Java集合框架的根接口,這兩個接口又包含了一些子接口(List,Set)和實現類(HashMap,ArrayList,HashSet…)。

在這裏插入圖片描述

  • Map

Map代表有映射關係的集合,存儲的對象通常爲鍵值對,以(“key”,value)的形式出現;添加元素時,不允許重複,當出現鍵相同時後加入的鍵值對的值就會覆蓋先加入的鍵值對的值。

HashMap:提供了最快的訪問技術,沒有按照添加的順序保存元素

LinkedHashMap:按照添加的順序保存元素,同時還保存了HashMap的保存順序

TreeMap:沒有按照添加的順序保存元素,且默認會對鍵進行排序(自然排序和定製排序二選一)

package com.dlj.test;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.TreeMap;


public class MapTest {

    public static void main(String[] args) {

        Map<String, Integer> nameAgeMap = new HashMap<String, Integer>();//新建一個HashMap集合,key爲String類型,value爲int類型

        //添加元素
        nameAgeMap.put("Tom", 25);
        nameAgeMap.put("Jack", 21);
        nameAgeMap.put("Bob", 23);
        nameAgeMap.put("Dlj", 22);
        nameAgeMap.put("Lucy", 27);
        nameAgeMap.put("Tom", 30);//鍵具有唯一性,後添加的值覆蓋前面的值


        System.out.println(nameAgeMap);//打印集合中的所有鍵值對

        System.out.println(nameAgeMap.size());//打印集合中元素的個數

        System.out.println(nameAgeMap.keySet());//打印集合中所有的鍵

        System.out.println(nameAgeMap.values());//打印集合中所有的值

        System.out.println(nameAgeMap.containsKey("Alice"));//判斷集合中是否存在"Alice"鍵

        System.out.println(nameAgeMap.containsValue(20));//判斷集合中是否存在20這個值

        System.out.println(nameAgeMap.get("Tom"));//獲取並打印鍵爲"Tom"所對應的的值

        System.out.println(nameAgeMap.remove("Dlj", 22));//移除Dlj=22這個鍵值對

        System.out.println("**********************");

        Map<String, Integer> nameScoreMap = new LinkedHashMap<String, Integer>();//新建一個LinkedHashMap集合,key爲String類型,value爲int類型

        //添加元素
        nameScoreMap.put("張三", 78);
        nameScoreMap.put("李四", 90);
        nameScoreMap.put("王五", 91);
        nameScoreMap.put("方六", 88);
        nameScoreMap.put("劉七", 64);

        System.out.println(nameScoreMap);//打印集合中的所有鍵值對

        System.out.println("**********************");

        Map<String, Integer> nameHeightMap = new TreeMap<String, Integer>();//新建一個TreeMap集合,key爲String類型,value爲int類型

        //添加元素
        nameHeightMap.put("CC", 182);
        nameHeightMap.put("BB", 160);
        nameHeightMap.put("DD", 155);
        nameHeightMap.put("AA", 178);

        System.out.println(nameHeightMap);//打印集合中的所有鍵值對
    }

}

在這裏插入圖片描述

  • List

List可以添加重複的元素,且元素是按照其添加順序進行存儲的

ArrayList:基於動態數組的實現,查詢快,添加,刪除和修改慢

LinkedList:添加,刪除,修改快,查詢慢

package com.dlj.test;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

/**
 * @Author ashley
 * @Date 2019/8/29 17:21
 */
public class ListTest {
    public static void main(String[] args) {
        List<String> nameList = new ArrayList<String>();//新建一個ArrayList集合

        //添加元素
        nameList.add("迪麗熱巴");
        nameList.add("易烊千璽");
        nameList.add("王一博");
        nameList.add("張碧晨");
        nameList.add("王奕迅");
        nameList.add("花粥");

        System.out.println(nameList);//打印集合
        
        System.out.println(nameList.size());//獲取並輸出集合中元素的個數
        
        System.out.println(nameList.get(0));//獲取並輸出0位置上的元素
        
        System.out.println(nameList.indexOf("花粥"));//獲取元素"花粥"所在的位置

        System.out.println("*******************");


        List<String> animalList = new LinkedList<String>();//新建一個LinkedList集合

        //添加元素
        animalList.add("cat");
        animalList.add("dog");
        animalList.add("pig");
        animalList.add("fish");

        System.out.println(animalList);//打印集合
        
        System.out.println(animalList.get(0));//獲取並打印0位置上的元素
        
        System.out.println(((LinkedList<String>) animalList).getFirst());//獲取並打印頭元素
        
        System.out.println(((LinkedList<String>) animalList).getLast());//獲取並打印尾元素
        
        System.out.println(animalList.contains("fish"));//判斷集合中是否存在fish這個元素,並打印執行結果
        
        System.out.println(animalList.remove("pig"));//從集合中移除pig元素,並打印執行結果

    }
}
        

在這裏插入圖片描述

  • Set

Set不保存重複的元素,通常使用Set來去重

HashSet:增刪查改速度最快,沒有按照添加的順序存儲元素,集合元素可以是null,但只能放入一個null

LinkedSet:按照添加的順序存儲元素

TreeSet:按照比較結果的升序保存元素

package com.dlj.test;

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

/**
 * @Author ashley
 * @Date 2019/8/29 17:21
 */
public class SetTest {
    public static void main(String[] args) {
        Set<String> bookSet = new HashSet<String>();

        //添加元素
        bookSet.add("Java核心技術");
        bookSet.add("C語言程序設計");
        bookSet.add("數據結構 C語言版");
        bookSet.add("深入理解Java虛擬機");
        bookSet.add("深入理解Java虛擬機");

        System.out.println(bookSet);//打印集合中所有元素
        
        System.out.println(bookSet.size());//打印集合中元素的個數
        
        System.out.println(bookSet.contains("Java核心技術"));//判斷號集合中是否包含"Java核心技術"字段,並輸出結果
        
        System.out.println(bookSet.remove("深入理解Java虛擬機"));//從集合中移除字段"深入理解Java虛擬機"
        
        bookSet.clear();//清空集合中的元素

        System.out.println("**********************");

        Set<String> citySet = new LinkedHashSet<String>();
		
		//添加元素
        citySet.add("上海");
        citySet.add("武漢");
        citySet.add("北京");
        citySet.add("浙江");
        citySet.add("長沙");

        System.out.println(citySet);

        System.out.println("**********************");

        Set<String> countrySet = new TreeSet<String>();
         
        //添加元素
		countrySet.add("China");
        countrySet.add("Japan");
        countrySet.add("America");
        countrySet.add("Korea");

        System.out.println(countrySet);

    }
}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章