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

javamap刪除元素

發布時間:2022-05-12 04:50:00

1. 在線等,急。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);
}

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

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

3. java list 與map有什麼區別

List:是存儲單列數據的集合,存儲的數據是有序並且是可以重復的


Map:存儲雙列數據的集合,通過鍵值對存儲數據,存儲 的數據是無序的,Key值不能重復,value值可以重復key和value是一一對應的

Collection介面

Collection是Java中最基本的集合介面。它描述了一組有關集合操作的方法。

希望對您有所幫助!~

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

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

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

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

5. map遍歷時怎麼刪除元素

HashMap的結構是<key, value>
想要移除某個元素,只要移除某個key下面的value即可。
如:
package yii.com;

import java.util.*;

public class HashMapDemo {
public static void main(String args[]) {
// 構造hashmap
HashMap newmap = new HashMap();

// 給hashmap賦值
newmap.put(1, "tutorials");
newmap.put(2, "point");
newmap.put(3, "is best");

System.out.println("Values before remove: "+ newmap);

// 移除key為2的value
newmap.remove(2);

System.out.println("Values after remove: "+ newmap);
}
}

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

祝:學習進步!

7. JAVA裡面set,map,list的區別是什麼(盡量詳細)

一、List介面
List是一個繼承於Collection的介面,即List是集合中的一種。List是有序的隊列,List中的每一個元素都有一個索引;第一個元素的索引值是0,往後的元素的索引值依次+1。和Set不同,List中允許有重復的元素。實現List介面的集合主要有:ArrayList、LinkedList、Vector、Stack。

ArrayList
ArrayList是一個動態數組,也是我們最常用的集合。它允許任何符合規則的元素插入甚至包括null。每一個ArrayList都有一個初始容量:

private static final int DEFAULT_CAPACITY = 10;

隨著容器中的元素不斷增加,容器的大小也會隨著增加。在每次向容器中增加元素的同時都會進行容量檢查,當快溢出時,就會進行擴容操作。所以如果我們明確所插入元素的多少,最好指定一個初始容量值,避免過多的進行擴容操作而浪費時間、效率。

size、isEmpty、get、set、iterator 和 listIterator 操作都以固定時間運行。add 操作以分攤的固定時間運行,也就是說,添加 n 個元素需要 O(n) 時間(由於要考慮到擴容,所以這不只是添加元素會帶來分攤固定時間開銷那樣簡單)。

ArrayList擅長於隨機訪問。同時ArrayList是非同步的。

LinkedList
同樣實現List介面的LinkedList與ArrayList不同,ArrayList是一個動態數組,而LinkedList是一個雙向鏈表。所以它除了有ArrayList的基本操作方法外還額外提供了get,remove,insert方法在LinkedList的首部或尾部。

由於實現的方式不同,LinkedList不能隨機訪問,它所有的操作都是要按照雙重鏈表的需要執行。在列表中索引的操作將從開頭或結尾遍歷列表(從靠近指定索引的一端,節約一半時間)。這樣做的好處就是可以通過較低的代價在List中進行插入和刪除操作。

與ArrayList一樣,LinkedList也是非同步的。如果多個線程同時訪問一個List,則必須自己實現訪問同步。一種解決方法是在創建List時構造一個同步的List:

List list = Collections.synchronizedList(new LinkedList(…));

Vector
與ArrayList相似,但是Vector是同步的。所以說Vector是線程安全的動態數組。它的操作與ArrayList幾乎一樣。

Stack
Stack繼承自Vector,實現一個後進先出的堆棧。Stack提供5個額外的方法使得Vector得以被當作堆棧使用。基本的push和pop方法,還有peek方法得到棧頂的元素,empty方法測試堆棧是否為空,search方法檢測一個元素在堆棧中的位置。Stack剛創建後是空棧。

二、Set介面
Set是一個繼承於Collection的介面,Set是一種不包括重復元素的Collection。它維持它自己的內部排序,所以隨機訪問沒有任何意義。與List一樣,它同樣運行null的存在但是僅有一個。由於Set介面的特殊性,所有傳入Set集合中的元素都必須不同,關於API方面。Set的API和Collection完全一樣。實現了Set介面的集合有:HashSet、TreeSet、LinkedHashSet、EnumSet。

HashSet
HashSet堪稱查詢速度最快的集合,因為其內部是以HashCode來實現的。集合元素可以是null,但只能放入一個null。它內部元素的順序是由哈希碼來決定的,所以它不保證set的迭代順序;特別是它不保證該順序恆久不變。

TreeSet
TreeSet是二叉樹實現的,基於TreeMap,生成一個總是處於排序狀態的set,內部以TreeMap來實現,不允許放入null值。它是使用元素的自然順序對元素進行排序,或者根據創建Set時提供的 Comparator 進行排序,具體取決於使用的構造方法。

LinkedHashSet
LinkedHashSet集合同樣是根據元素的hashCode值來決定元素的存儲位置,但是它同時使用鏈表維護元素的次序。這樣使得元素看起 來像是以插入順序保存的,也就是說,當遍歷該集合時候,LinkedHashSet將會以元素的添加順序訪問集合的元素。LinkedHashSet在迭代訪問Set中的全部元素時,性能比HashSet好,但是插入時性能稍微遜色於HashSet。

三、Map介面
Map與List、Set介面不同,它是由一系列鍵值對組成的集合,提供了key到Value的映射。在Map中它保證了key與value之間的一一對應關系。也就是說一個key對應一個value,所以它不能存在相同的key值,當然value值可以相同。實現map的集合有:HashMap、HashTable、TreeMap、WeakHashMap。

HashMap
以哈希表數據結構實現,查找對象時通過哈希函數計算其位置,它是為快速查詢而設計的,其內部定義了一個hash表數組(Entry[] table),元素會通過哈希轉換函數將元素的哈希地址轉換成數組中存放的索引,如果有沖突,則使用散列鏈表的形式將所有相同哈希地址的元素串起來,可能通過查看HashMap.Entry的源碼它是一個單鏈表結構。

HashTable
也是以哈希表數據結構實現的,解決沖突時與HashMap也一樣也是採用了散列鏈表的形式。HashTable繼承Dictionary類,實現Map介面。其中Dictionary類是任何可將鍵映射到相應值的類(如 Hashtable)的抽象父類。每個鍵和每個值都是一個對象。在任何一個 Dictionary 對象中,每個鍵至多與一個值相關聯。Map是」key-value鍵值對」介面。 HashTable採用」拉鏈法」實現哈希表不過性能比HashMap要低。

TreeMap
有序散列表,實現SortedMap介面,底層通過紅黑樹實現。

WeakHashMap
談WeakHashMap前先看一下Java中的引用(強度依次遞減)

強引用:普遍對象聲明的引用,存在便不會GC
軟引用:有用但並非必須,發生內存溢出前,二次回收
弱引用:只能生存到下次GC之前,無論是否內存足夠
虛引用:唯一目的是在這個對象被GC時能收到一個系統通知
以弱鍵實現的基於哈希表的Map。在 WeakHashMap 中,當某個鍵不再正常使用時,將自動移除其條目。更精確地說,對於一個給定的鍵,其映射的存在並不阻止垃圾回收器對該鍵的丟棄,這就使該鍵成為可終止的,被終止,然後被回收。丟棄某個鍵時,其條目從映射中有效地移除,因此,該類的行為與其他的 Map 實現有所不同。null值和null鍵都被支持。該類具有與HashMap類相似的性能特徵,並具有相同的效能參數初始容量和載入因子。像大多數集合類一樣,該類是不同步的。

四、總結
1、List、Set都是繼承自Collection介面,Map則不是。

2、List特點:元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重復,重復元素會覆蓋掉,(注意:元素雖然無放入順序,但是元素在set中的位置是有該元素的HashCode決定的,其位置其實是固定的,加入Set 的Object必須定義equals()方法 ,另外list支持for循環,也就是通過下標來遍歷,也可以用迭代器,但是set只能用迭代,因為他無序,無法用下標來取得想要的值。)

3、Set和List對比:
Set:檢索元素效率低下,刪除和插入效率高,插入和刪除不會引起元素位置改變。
List:和數組類似,List可以動態增長,查找元素效率高,插入刪除元素效率低,因為會引起其他元素位置改變。

4、Map適合儲存鍵值對的數據

5、線程安全集合類與非線程安全集合類 :

LinkedList、ArrayList、HashSet是非線程安全的,Vector是線程安全的;
HashMap是非線程安全的,HashTable是線程安全的;
StringBuilder是非線程安全的,StringBuffer是線程安全的。

8. java中Map類有什麼作用,具體怎麼用呢

map是以鍵值對來存儲數據的,例如:
Map map = new HashMap();
map.put("移動","10086");
String c = map.get("移動");
結果c="10086」;
簡單來說,map就像我們手機的電話本,用map.put("移動","10086"),就是在電話本保存了移動的電話,然後當你想拿移動的電話時候就用String c = map.get("移動");就可以拿到電話號碼了。其實學習結合生活實際比較容易理解,也學得快。

9. 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);
}
}
}

10. 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,這樣才比較高效

閱讀全文

與javamap刪除元素相關的資料

熱點內容
手機號碼如何加密 瀏覽:424
沈陽程序員培訓學校 瀏覽:538
一般伺服器如何配置 瀏覽:895
圖片怎樣加密發郵件 瀏覽:619
萬虹電腦文件夾密碼忘記了怎麼辦 瀏覽:631
rc108單片機 瀏覽:867
戰雷如何改變伺服器 瀏覽:674
mactelnet命令 瀏覽:51
壓縮袋壓縮了拿出來 瀏覽:401
安卓手機相機怎麼設置許可權 瀏覽:121
美女程序員轉行做主播 瀏覽:671
辦理解壓房產 瀏覽:575
道路工程概論pdf 瀏覽:388
超棒數學速演算法大全 瀏覽:937
小米易語言登錄源碼 瀏覽:31
磚牆內加密鋼筋 瀏覽:992
鄉關何處pdf 瀏覽:84
小豬領贊小程序源碼 瀏覽:336
python曲線如何原路返回 瀏覽:430
pdf快速看圖破解版 瀏覽:294