更新時間:2022-10-13 10:23:15 來源:動力節(jié)點 瀏覽1771次
集是一個集合,它可以快速地查找現(xiàn)有的元素。但是,要查看一個元素,需要有要查找元素的精確副本。這不是一種非常通用的查找方式,因為在集合中查找元素總是要遍歷集合(Java集合遍歷的幾種方式)。通常,我們知道某些鍵的信息,并想要查找與之對應(yīng)的元素。映射(map)數(shù)據(jù)結(jié)構(gòu)就是為此而設(shè)計的。映射用來存放鍵/值對。如果提供了鍵,就能夠查找到值。它們之間是一一對應(yīng)關(guān)系。
Java類庫為映射提供了兩個通用的實現(xiàn):HashMap和TreeMap,這兩個類都實現(xiàn)了Map接口
散列映射(HashMap)對鍵進行散列,樹映射(TreeMap)用鍵的整體順序?qū)υ剡M行排序,并將其組織成搜索樹。
散列或比較函數(shù)只能作用于鍵。與鍵關(guān)聯(lián)的值不不能進行散列或比較
與集一樣,散列映射比樹映射稍微快一些,所以在不需要按照排列順序訪問鍵的時候,最好選用散列映射
OP->>要進行鍵值存儲,必須使用put方法
OP->>要進行鍵值訪問,必須使用get方法,且只能通過鍵來訪問到值
OP->>如果找不到值卻不想返回一個空對象,則使用getOrDefault(var1,var2),如果找不到值則返回var2。
鍵必須是唯一的,如果對一對映射調(diào)用兩次put方法,則后一次調(diào)用會覆蓋前一次調(diào)用。并返回第一次調(diào)用的結(jié)果
OP->>要進行鍵值對的移除,則要使用remove(鍵)的方法
OP->>要想獲取鍵值對的數(shù)量,則要使用size()方法
OP->>要迭代處理每個鍵和值,最好是使用forEach方法,可以向這個方法提供一個lambda表達式,用來依次處理映射中的每一個元素
類似于scores.forEach((k,v)->System.out.println("key="+k+",value="+v));
下面示例程序演示了映射的操作過程,首先將鍵/值對添加到映射中。然后從映射中刪除一個鍵,同時與之對應(yīng)的值也被刪除了。接下來,修改與某一個鍵對應(yīng)的值,并調(diào)用get方法查看這個值。最后,迭代處理條目集。
代碼:
package Collection.Map;
import java.util.*;
public class MapTest {
public static void main(String[] args) {
Map<String,Employee> staff=new HashMap<>();
staff.put("144-25-5464", new Employee("Amy Lee"));
staff.put("567-24-2546", new Employee("Harry Hacker"));
staff.put("157-62-7935", new Employee("Gary Cooper"));
staff.put("456-62-5527", new Employee("Francesca Cruz"));
//打印所有成員
System.out.println(staff);
//刪除某一成員
staff.remove("567-24-2546");
//替代一個成員
staff.put("456-62-5527", new Employee("Francesca Miller"));
//查看一個成員
System.out.println(staff.get("157-62-7935"));
//遍歷映射
staff.forEach((k,v)->System.out.println("key="+k+",value="+v));
}
}
class Employee{
String name;
public Employee(String name) {
this.name = name;
}
public String toString() {
return "[name="+name+"]";
}
}
運行結(jié)果:
通過上述介紹,相信大家對Java映射的概念已經(jīng)有所了解,大家如果想了解更多相關(guān)知識,可以關(guān)注一下動力節(jié)點的Java在線學(xué)習,里面的課程內(nèi)容細致全面,很適合沒有基礎(chǔ)的小伙伴學(xué)習,希望對大家能夠有所幫助。
相關(guān)閱讀