導航:首頁 > 編程語言 > java刪除map元素

java刪除map元素

發布時間:2023-02-24 07:11:36

1. java:如何刪除LinkedHashMap<String,String> Summery中0到10的元素

由於這個類是以鍵值對方式存儲的,只能以鍵值刪除,可以將鍵值設置特殊標記,以便刪除

2. java中map.remove()方法刪除元素在weblogic中沒有執行

這應該和線程安不安全沒有關系, 試想: 如果線程不安全, 兩個線程同時執行remove, 總是有一個會成功的。

我認為這個問題最有可能是犯了一個很簡單但是在web中又非常容易犯的錯誤: remove方法根本就沒有走到, 你可以在remove方法之前, 將map的value打到log中, 然後刪除之後, 再打一遍,問題就一目瞭然。

排查問題的時候,假如最初的入口點是錯誤的, 然後一直束縛在自己的思維之內, 會一直引導你在錯誤的道路上走; 這個時候, 換個角度去思考, 可能就會豁然開朗。

3. java ee問題,我用map.remove()方法不能刪除元素

大致看了下目前的情況,我估計你大概沒理解MAP的數據結構,map是一種以key value形式保存數據的結構,你用的remove方法接收的參數是指map的key值,我懷疑你的這個bid並不是map的key值,而是value值,理由就是map.containsKey(bid);這句話的結果是false,所以你不能直接調用remove方法刪除,只能遍歷map比較value值:
Iterator it = map.keySet().iterator();
if(it.hasNext()){
Object o = it.next();
if(bid.equals(o)){
it.remove();
}
}
這樣應該可以了,不過這不是最好的辦法,你應該去看看數據進入map的時候是如何保存的,調用這個delete方法的時候應該傳過來的是這個map當時存放的key,這樣才比較高效

4. 在線等,急。Java中如何通過key值把LinkedHashMap中的Value刪除

entries.remove(Object o) 這是直接刪除對象的,傳key進去沒有用,你可以debug一下remove返回肯定是false。

可以直接從map中直接把id刪掉,map.remove(id)

publicvoiddelete(intid){
map.remove(id);
}

這樣處理效率比較高,時間復雜度O(n)。或者可以這樣

publicvoiddelete(intid){
map.keySet().remove(id);
}

5. JAVA:如何刪掉list裡面重復的Map

不知道你為什麼有這種變態需求。如果是作為學習訓練還情有可原,要是你是要實現一個什麼東西不得不這樣,那你就實在是實現的太搓了。用什麼不好,用這么多map,還用list來過濾。
算我無聊,這是代碼,clearList是方法,main是給你寫的一個測試用的例子
public class Test
{
public static void clearList(List<Map<String, String>> list)
{
if (list == null) return;

Set<String> set = new HashSet<String>();
for (Iterator<Map<String, String>> it = list.iterator(); it.hasNext();)
{
//裡面的map至少有一個元素,不然報錯
String value = it.next().entrySet().iterator().next().getValue();
if (set.contains(value))
{
it.remove();
}
else
{
set.add(value);
}
}
}

public static void main(String args[])
{
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
Map<String, String> map1 = new HashMap<String, String>();
map1.put("1", "abc");
Map<String, String> map2 = new HashMap<String, String>();
map2.put("2", "abdc");
Map<String, String> map3 = new HashMap<String, String>();
map3.put("3", "abc");
list.add(map1);
list.add(map2);
list.add(map3);
clearList(list);
for (Iterator<Map<String, String>> it = list.iterator(); it.hasNext();)
{
String value = it.next().entrySet().iterator().next().getValue();
System.out.println(value);
}
}
}

6. java中的Map有什麼用呢

Map的介面Map---實現Map
Map.Entry--Map的內部類,描述Map中的按鍵/數值對。
SortedMap---擴展Map,使按鍵保持升序排列
下面以HashMap為例。
public static void main(String args[]){HashMap hashmap = new HashMap();
hashmap.put("Item0", "Value0");
hashmap.put("Item1", "Value1");
hashmap.put("Item2", "Value2");
hashmap.put("Item3", "Value3");
Set set = hashmap.entrySet();
Iterator iterator = set.iterator();
while (iterator.hasNext(){Map.Entry mapentry = (Map.Entry) iterator.next();
System.out.println(mapentry.getkey() + "/" + mapentry.getValue());}}注意,這里Map的按鍵必須是唯一的,比如說不能有兩個按鍵都為null。
如果用過它,就會知道它的用處了。
資料:java.util 中的集合類包含 Java 中某些最常用的類。 最常用的集合類是 List 和 Map。 List 的具體實現包括 ArrayList 和 Vector,它們是可變大小的列表,比較適合構建、存儲和操作任何類型對象的元素列表。 List 適用於按數值索引訪問元素的情形。Map 提供了一個更通用的元素存儲方法。 Map 集合類用於存儲元素對(稱作「鍵」和「值」),其中每個鍵映射到一個值。 從概念上而言,您可以將 List 看作是具有數值鍵的 Map。 而實際上,除了 List 和 Map 都在定義 java.util 中外,兩者並沒有直接的聯系。本文將著重介紹核心 Java 發行套件中附帶的 Map,同時還將介紹如何採用或實現更適用於您應用程序特定數據的專用 Map。了解Map 介面和方法Java 核心類中有很多預定義的 Map 類。 在介紹具體實現之前,我們先介紹一下 Map 介面本身,以便了解所有實現的共同點。 Map 介面定義了四種類型的方法,每個 Map 都包含這些方法。 下面,我們從兩個普通的方法(表1)開始對這些方法加以介紹。表1: 覆蓋的方法。 我們將這 Object 的這兩個方法覆蓋,以正確比較 Map 對象的等價性。equals(Object o)比較指定對象與此 Map 的等價性hashCode()返回此 Map 的哈希碼Map 構建Map 定義了幾個用於插入和刪除元素的變換方法(表2)。表2: Map 更新方法: 可以更改 Map 內容。clear()從Map 中刪除所有映射remove(Object key)從Map 中刪除鍵和關聯的值put(Object key, Object value)將指定值與指定鍵相關聯clear()從Map 中刪除所有映射putAll(Map t)將指定 Map 中的所有映射復制到此 map盡管您可能注意到,縱然假設忽略構建一個需要傳遞給 putAll() 的 Map 的開銷,使用 putAll() 通常也並不比使用大量的 put() 調用更有效率,但 putAll() 的存在一點也不稀奇。 這是因為,putAll() 除了迭代 put() 所執行的將每個鍵值對添加到 Map 的演算法以外,還需要迭代所傳遞的 Map 的元素。 但應注意,putAll() 在添加所有元素之前可以正確調整 Map 的大小,因此如果您未親自調整 Map 的大小(我們將對此進行簡單介紹),則 putAll() 可能比預期的更有效。查看Map迭代Map 中的元素不存在直接了當的方法。 如果要查詢某個 Map 以了解其哪些元素滿足特定查詢,或如果要迭代其所有元素(無論原因如何),則您首先需要獲取該 Map 的「視圖」。 有三種可能的視圖(參見表3)所有鍵值對 — 參見 entrySet()所有鍵 — 參見 keySet()所有值 — 參見 values()前兩個視圖均返回 Set 對象,第三個視圖返回 Collection 對象。 就這兩種情況而言,問題到這里並沒有結束,這是因為您無法直接迭代 Collection 對象或 Set 對象。要進行迭代,您必須獲得一個 Iterator 對象。 因此,要迭代 Map 的元素,必須進行比較煩瑣的編碼Iterator keyValuePairs = aMap.entrySet().iterator();Iterator keys = aMap.keySet().iterator();Iterator values = aMap.values().iterator();值得注意的是,這些對象(Set、Collection 和 Iterator)實際上是基礎 Map 的視圖,而不是包含所有元素的副本。 這使它們的使用效率很高。 另一方面,Collection 或 Set 對象的 toArray() 方法卻創建包含 Map 所有元素的數組對象,因此除了確實需要使用數組中元素的情形外,其效率並不高。我運行了一個小測試(隨附文件中的 Test1),該測試使用了 HashMap,並使用以下兩種方法對迭代 Map 元素的開銷進行了比較:int mapsize = aMap.size();Iterator keyValuePairs1 = aMap.entrySet().iterator();for (int i = 0; i < mapsize; i++){ Map.Entry entry = (Map.Entry) keyValuePairs1.next(); Object key = entry.getKey(); Object value = entry.getValue(); ...}Object[] keyValuePairs2 = aMap.entrySet().toArray();for (int i = 0; i < rem; i++) {{ Map.Entry entry = (Map.Entry) keyValuePairs2[i]; Object key = entry.getKey();
Profilers in Oracle JDeveloperOracle JDeveloper 包含一個嵌入的監測器,它測量內存和執行時間,使您能夠快速識別代碼中的瓶頸。 我曾使用 Jdeveloper 的執行監測器監測 HashMap 的 containsKey() 和 containsValue() 方法,並很快發現 containsKey() 方法的速度比 containsValue() 方法慢很多(實際上要慢幾個數量級!)。 (參見圖1 和圖2,以及隨附文件中的 Test2 類)。 Object value = entry.getValue(); ...}此測試使用了兩種測量方法: 一種是測量迭代元素的時間,另一種測量使用 toArray 調用創建數組的其他開銷。 第一種方法(忽略創建數組所需的時間)表明,使用已從 toArray 調用中創建的數組迭代元素的速度要比使用 Iterator 的速度大約快 30%-60%。 但如果將使用 toArray 方法創建數組的開銷包含在內,則使用 Iterator 實際上要快 10%-20%。 因此,如果由於某種原因要創建一個集合元素的數組而非迭代這些元素,則應使用該數組迭代元素。 但如果您不需要此中間數組,則不要創建它,而是使用 Iterator 迭代元素。表3: 返回視圖的 Map 方法: 使用這些方法返回的對象,您可以遍歷 Map 的元素,還可以刪除 Map 中的元素。entrySet()返回Map 中所包含映射的 Set 視圖。 Set 中的每個元素都是一個 Map.Entry 對象,可以使用 getKey() 和 getValue() 方法(還有一個 setValue() 方法)訪問後者的鍵元素和值元素keySet()返回Map 中所包含鍵的 Set 視圖。 刪除 Set 中的元素還將刪除 Map 中相應的映射(鍵和值)values()返回map 中所包含值的 Collection 視圖。 刪除 Collection 中的元素還將刪除 Map 中相應的映射(鍵和值)訪問元素表4 中列出了 Map 訪問方法。Map 通常適合按鍵(而非按值)進行訪問。 Map 定義中沒有規定這肯定是真的,但通常您可以期望這是真的。 例如,您可以期望 containsKey() 方法與 get() 方法一樣快。 另一方面,containsValue() 方法很可能需要掃描 Map 中的值,因此它的速度可能比較慢。表4: Map 訪問和測試方法: 這些方法檢索有關 Map 內容的信息但不更改 Map 內容。get(Object key)返回與指定鍵關聯的值containsKey(Object key)如果Map 包含指定鍵的映射,則返回 truecontainsValue(Object value)如果此 Map 將一個或多個鍵映射到指定值,則返回 trueisEmpty()如果Map 不包含鍵-值映射,則返回 truesize()返回Map 中的鍵-值映射的數目對使用 containsKey() 和 containsValue() 遍歷 HashMap 中所有元素所需時間的測試表明,containsValue() 所需的時間要長很多。 實際上要長幾個數量級! (參見圖1 和圖2,以及隨附文件中的 Test2)。 因此,如果 containsValue() 是應用程序中的性能問題,它將很快顯現出來,並可以通過監測您的應用程序輕松地將其識別。 這種情況下,我相信您能夠想出一個有效的替換方法來實現 containsValue() 提供的等效功能。 但如果想不出辦法,則一個可行的解決方案是再創建一個 Map,並將第一個 Map 的所有值作為鍵。

7. 怎麼樣刪除map中指定值為value所有元素

祝:學習進步!

8. 求大神會java的hashmap的問題:如何刪掉Map中重復的值

importjava.util.HashSet;
importjava.util.Iterator;
importjava.util.Map;
importjava.util.Map.Entry;
importjava.util.Set;

importorg.apache.commons.collections4.map.LinkedMap;

publicclassTest030{

/**
*@paramargs
*/
publicstaticvoidmain(String[]args){
//TODOAuto-generatedmethodstub
Map<String,String>m=newLinkedMap<String,String>();
m.put("1","abc");
m.put("2","abc");
m.put("3","kjs");
m.put("4","abc");
m.put("5","kjs");
System.out.println("before:"+m);
removeDuplicate(m);
System.out.println("after:"+m);
}

(Map<String,String>m){
Set<String>values=newHashSet<String>();
for(Iterator<Entry<String,String>>it=m.entrySet().iterator();it
.hasNext();){
Entry<String,String>e=it.next();
if(values.contains(e.getValue())){
it.remove();
}else{
values.add(e.getValue());
}
}
}

}

寫的時候沒有注意, 如果jdk中沒有linkedMap, 那麼請引入commons的collections包

主要是HashMap不保證順序

9. javamap的用法

javamap的用法如下;

1、void clear():刪除Map中所有鍵值對。
2、boolean containsKey(Object key):查詢Map中是否包含指定key,如果包含則返回true。
3、boolean containsValue(Object value):查詢Map中是否包含指定value,如果包含則返回true。


9、void putAll(Map m):將指定Map中的鍵值對復制到Map中。
10、Object remove(Object key):刪除指定key所對應的鍵值對,返回可以所關聯的value,如果key不存在,返回null。
11、int size():返回該Map里的鍵值對的個數。
12、Collection values():返回該Map里所有value組成的Collection。
Map中包含一個內部類:Entry。該類封裝了一個鍵值對,它包含了三個方法:
1、Object getKey():返回該Entry里包含的key值。
2、Object getValeu():返回該Entry里包含的value值。
3、Object setValue(V value):設置該Entry里包含的value值,並返回新設置的value值。

10. java map 的用法

map是個介面

用都是用HasMap等實現Map介面的類

創建:Map<String,String> map = new HashMap<String,String>();
插入元素:map.put("1","a");
移除元素: map.remove("1");
清空: map.clear();

具體參照java API
java.uitl.HashMap

閱讀全文

與java刪除map元素相關的資料

熱點內容
安卓快手下載怎麼沒有下載到本地 瀏覽:228
怎麼在安卓手機登繪旅人 瀏覽:404
桌面文件全部加密 瀏覽:401
6s怎麼外接u盤需要什麼app 瀏覽:131
linux查看文件許可權命令 瀏覽:685
安卓手游存檔怎麼用 瀏覽:761
linuxyum安裝ftp 瀏覽:690
村委會主任可以推行政命令嗎 瀏覽:102
電腦文件夾封面多張圖片 瀏覽:263
網吧總伺服器叫什麼 瀏覽:922
多個演算法解決同一個問題 瀏覽:455
小車解壓後我的購車發票呢 瀏覽:977
做app開發用什麼雲伺服器 瀏覽:177
linux網卡子介面 瀏覽:985
21歲職高畢業學程序員怎麼學 瀏覽:321
vs如何對單個文件編譯 瀏覽:6
為什麼有的電腦不能安裝python 瀏覽:75
金蝶迷你版加密狗檢測到過期 瀏覽:186
硬體描述語言編譯結果 瀏覽:655
程序員逆天改命 瀏覽:19