概述:
Java集合主要由兩個接口派生而出,分別是Collection和Map,它們是Java集合框架的根接口,這兩個接口又包含了一些子接口(List,Set)和實現類(HashMap,ArrayList,HashSet…)。
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可以添加重複的元素,且元素是按照其添加順序進行存儲的
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來去重
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);
}
}