您好,登錄后才能下訂單哦!
這篇文章給大家介紹Java中的map如何使用,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。
Map與Collection
提到Map集合接口就不能不提到Collection集合接口,map和Collection都是集合接口,Collection中包含了我們經(jīng)常用的list和set子接口;而Map是與Collection處于平級的地位;Collection中存儲的是一組對象,而Map存儲的是一個鍵值對(key/value).
Map
java為數(shù)據(jù)結(jié)構(gòu)中的映射定義了一個接口java.util.Map
Map主要用于存儲健值對,根據(jù)鍵得到值,因此不允許鍵重復(fù)(重復(fù)了覆蓋了),但允許值重復(fù)。
Map 提供了一個更通用的元素存儲方法。Map 集合類用于存儲元素對(稱作“鍵”和“值”),其中每個鍵映射到一個值。從概念上而言,您可以將 List 看作是具有數(shù)值鍵的 Map。而實際上,除了 List 和 Map 都在定義 java.util 中外,兩者并沒有直接的聯(lián)系。
在Map對象中,Key是唯一的,不可重復(fù)的。null也可以作為key,但這樣的key只能有一個;但是可以有一個或多個key所對應(yīng)的value都是null。
常用API:
clear() | 從 Map 中刪除所有映射 |
remove(Object key) | 從 Map 中刪除鍵和關(guān)聯(lián)的值 |
put(Object key, Object value) | 將指定值與指定鍵相關(guān)聯(lián) |
putAll(Map t) | 將指定 Map 中的所有映射復(fù)制到此 map |
entrySet() | 返回 Map 中所包含映射的 Set 視圖。Set 中的每個元素都是一個 Map.Entry 對象,可以使用 getKey() 和 getValue() 方法(還有一個 setValue() 方法)訪問后者的鍵元素和值元素 |
keySet() | 返回 Map 中所包含鍵的 Set 視圖。如果要刪除 Set 中的元素還將會刪除 Map 中相應(yīng)的映射(鍵和值) |
values() | 返回 map 中所包含值的 Collection 視圖。如果要刪除 Collection 中的元素還將會刪除 Map 中相應(yīng)的映射(鍵和值) |
get(Object key) | 返回與指定鍵關(guān)聯(lián)的值 |
containsKey(Object key) | 如果 Map 包含指定鍵的映射,則返回 true |
containsValue(Object value) | 如果此 Map 將一個或多個鍵映射到指定值,則返回 true |
isEmpty() | 如果 Map 不包含鍵-值映射,則返回 true |
size() | 返回 Map 中的鍵-值映射的數(shù)目 |
當(dāng)我們想判斷map中是否存在某個key時,可以用方法containsKey()來判斷,同樣想判斷是否存在value時用方法containsValue()來判斷;代碼如下:
public static void main(String[] args) { Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >(); map.put(null,null); map.put("a", "1"); map.put("b", "2"); map.put("c", "3"); if (map.containsKey("a")) { System.out.println("Key=Ture"); if (map.containsValue("1")) { System.out.println("value=Ture"); } } }
執(zhí)行結(jié)果是:
Key=Ture value=Ture
Map中提供了一些常用的方法來取出Map中的數(shù)據(jù),用的比較多的比如:entrySet()方法,;entrySet()的返回值是個Set集合,此集合的類型為Map.Entry。Map.Entry是Map聲明的一個內(nèi)部接口,此接口為泛型,定義為Entry<K,V>。它表示Map中的一個實體(一個key-value對)。接口中有g(shù)etKey(),getValue方法,代碼如下:
public static void main(String[] args) { Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >(); map.put(null,null); map.put("a", "1"); map.put("b", "2"); map.put("c", "3"); Set<Entry<Serializable, Serializable>> entrySet= map.entrySet(); System.out.println("entrySet="+entrySet); for (Entry key : entrySet) { System.out.println("key.getKey="+key.getKey()+" key.getValue()="+ key.getValue()); } }
執(zhí)行的結(jié)果如下:
entrySet=[null=null, a=1, b=2, c=3]
key.getKey=null key.getValue()=null
key.getKey=a key.getValue()=1
key.getKey=b key.getValue()=2
key.getKey=c key.getValue()=3
接下來要說的是keySet方法,keySet()方法返回值是Map中key值的集合,然后可以通過get(key)遍歷來獲取value值,代碼如下:
public static void main(String[] args) { Map< Serializable, Serializable > map = new HashMap< Serializable, Serializable >(); map.put(null,null); map.put("a", "1"); map.put("b", "2"); map.put("c", "3"); Set keySet= map.keySet(); System.out.println("keySet="+keySet); for (Iterator iterator = keySet.iterator(); iterator.hasNext();) { Object key = (Object) iterator.next(); Object value = map.get(key); System.out.println("key = "+key+ " value="+value); } }
執(zhí)行的結(jié)果如下:
keySet=[null, a, b,c]
key = null value=null
key = a value=1
key = b value=2
key = c value=3
最后要說的是,map還有一個values()方法,values()方法返回值是Map中value值的集合,通過遍歷可以取出value的值,代碼如下:
public static void main(String[] args) { Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>(); map.put(null, null); map.put("a", "1"); map.put("b", "2"); map.put("c", "3"); Collection c = map.values(); System.out.println("map.values()=" + map.values()); for (Iterator iterator = c.iterator(); iterator.hasNext();) { Object value = (Object) iterator.next(); System.out.println("value="+value); } }
代碼執(zhí)行結(jié)果如下:
map.values()=[null,1, 2, 3]
value=null
value=1
value=2
value=3
自己做的一個利用map進(jìn)行hql語句拼接的小例子:
public class HqlMap { public static void main(String[] args) { Map<Serializable, Serializable> map = new HashMap<Serializable, Serializable>(); map.put("isDelete", 0); map.put("roomTypeName", "test"); Map<Serializable, Serializable> map1 = new HashMap<Serializable, Serializable>(); StringBuilder hqlBuilder = new StringBuilder(); hqlBuilder.append(" from Build "); String hql = "" ; if (map.isEmpty()) { hql=hqlBuilder.toString(); } else { hqlBuilder.append(" where "); Set keySet = map.keySet(); for (Iterator iterator = keySet.iterator(); iterator.hasNext();) { Object key = (Object) iterator.next(); hqlBuilder.append(key + "=:" + key + " and "); } //去掉最后的一個and int lastIndex = hqlBuilder.lastIndexOf("and"); if (lastIndex > -1) { hql = hqlBuilder.substring(0, lastIndex) + hqlBuilder.substring(lastIndex + 3, hqlBuilder.length()); } } System.out.println(hql); } }
關(guān)于Java中的map如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。