導航:首頁 > 編程語言 > javamap怎麼直接初始化

javamap怎麼直接初始化

發布時間:2023-02-24 09:06:15

java中HashMap初始容量問題

這個問題可以跟蹤一下HashMap的源碼就知道了,根據輸入的初始化容量(門檻?)的值(先了解HashMap中容量和負載因子的概念,其實這個和HashMap確定存儲地址的演算法有關),先判斷是否大於最大容量,最大容量2的30次方,1<<30 =(1073741824),如果大於此數,初始化容量賦值為1<<30,如果小於此數,調用tableSizeFor方法 使用位運算將初始化容量修改為2的次方數,都是向大的方向運算,比如輸入13,小於2的4次方,那面計算出來桶的初始容量就是16.

publicHashMap(intinitialCapacity){
this(initialCapacity,DEFAULT_LOAD_FACTOR);
}
/**
*Constructsanempty<tt>HashMap</tt>withthespecifiedinitial
*capacityandloadfactor.
*
*@
*@paramloadFactortheloadfactor
*@
*ortheloadfactorisnonpositive
*/
publicHashMap(intinitialCapacity,floatloadFactor){
if(initialCapacity<0)
("Illegalinitialcapacity:"+
initialCapacity);
if(initialCapacity>MAXIMUM_CAPACITY)
initialCapacity=MAXIMUM_CAPACITY;
if(loadFactor<=0||Float.isNaN(loadFactor))
("Illegalloadfactor:"+
loadFactor);
this.loadFactor=loadFactor;
this.threshold=tableSizeFor(initialCapacity);
}

/**

* Returns a power of two size for the given target capacity.

*/

static final int tableSizeFor(int cap) {

int n = cap - 1;

n |= n >>> 1;

n |= n >>> 2;

n |= n >>> 4;

n |= n >>> 8;

n |= n >>> 16;

return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;

}

Ⅱ java遍歷Map的幾種方法分析

1.先初始化一個map
public class TestMap {
public static Map<Integer, Integer> map = new HashMap<Integer, Integer>();
}
2.keySet values
如果只需要map的key或者value,用map的keySet或values方法無疑是最方便的
// KeySet 獲取key
public void testKeySet() {
for (Integer key : map.keySet()) {
System.out.println(key);
}
}
// values 獲取value
public void testValues() {
for (Integer value : map.values()) {
System.out.println(value);
}
}
3.keySet get(key)
如果需要同時獲取key和value,可以先獲取key,然後再通過map的get(key)獲取value

需要說明的是,該方法不是最優選擇,一般不推薦使用

// keySet get(key) 獲取key and value
public void testKeySetAndGetKey() {
for (Integer key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
}
4.entrySet
通過對map entrySet的遍歷,也可以同時拿到key和value,一般情況下,性能上要優於上一種,這一種也是最常用的遍歷方法

// entrySet 獲取key and value
public void testEntry() {
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
5.Iterator
對於上面的幾種foreach都可以用Iterator代替,其實foreach在java5中才被支持,foreach的寫法看起來更簡潔

但Iterator也有其優勢:在用foreach遍歷map時,如果改變其大小,會報錯,但如果只是刪除元素,可以使用Iterator的remove方法刪除元素

// Iterator entrySet 獲取key and value
public void testIterator() {
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
// it.remove(); 刪除元素
}
}

Ⅲ map string string 怎麼初始化

我也給你一個例子

import java.util.Map;
public class EnvMap {
public static void main (String[] args) {
Map<String, String> env = System.getenv();
for (String envName : env.keySet()) {
System.out.format("%s=%s%n", envName, env.get(envName));
}

Ⅳ java hashmap怎麼初始化

HashMap 是一種常用的復數據結構制,一般用來做數據字典或者 Hash 查找的容器。普通青年一般會這么初始化:
HashMap<String, String> map = new HashMap<String, String>();
map.put("name", "test");
map.put("age", "20");

看完這段代碼,很多人都會覺得這么寫太啰嗦了,文藝青年一般這么來了:
HashMap<String, String> map = new HashMap<String, String>() {
{
map.put("name", "test");
map.put("age", "20");
}
};

Ⅳ 我在JAVA裡面寫了一個list合集,我想要用map類型初始化list裡面的東西

HashMap<String, Integer> hm = new HashMap<String, Integer>();
hm.put("", 0);
沒怎麼看懂問題, 你的TestLzp 是自定義類專,構造器屬是(String,Integer)吧,

Ⅵ 關於JAVA MAP怎麼初始化生成

首先你要理解 Map的基本結構,key-value

這里最外層的Map,key是類型,value是ArrayList。ArrayList裡面放得又是Map,這個Map的key是String,value也是String。

importjava.util.ArrayList;
importjava.util.HashMap;
importjava.util.Map;

publicclassTest{
publicstaticvoidmain(String[]args){
Map<String,ArrayList<Map<String,String>>>topMap=newHashMap<>();

Stringkey1="map_key1";//topMap的第一個key
ArrayList<Map<String,String>>value1=newArrayList<>();//topMap的第一個value

//start
Map<String,String>strMap=newHashMap<>();
strMap.put("hello","你好");
strMap.put("thanks","謝謝");
value1.add(strMap);

value1.add(newHashMap<>());//添加一個空的Map
//end

topMap.put(key1,value1);//放入topMap

//以上start到end段的代碼是在往value1的ArrayList中填充數據
//不填充也可以放入到topMap中,就像下面這樣
topMap.put("emptyList",newArrayList<Map<String,String>>());
topMap.put("emptyList2",newArrayList<>());//jdk1.7及之後推薦這樣寫,省掉泛型描述。前面的newHashMap<>()、newArrayList<>()也是省掉了
}
}

Ⅶ java中private Map<String,List<實體>> names=null; 這樣調用的時候會出現空指針異常,求如何初始化

1.因為你只是 聲明了一個對象啊,可以理解為一個虛擬的東東,也可以理解為一個遙控器,此時未給他匹配一個電視機,那麼你操作遙控器有作用么?
2.只有創建(new)了以後,才給這個對象分配內存, 這時候就是一個具體的東東,你才能使用他. 此時給他指定了一個電視機,那麼你就可以操作遙控器了,而且效果很好.
3.java里創建對象很簡單, 就是用new
4.你的這個可以寫成
names = new HashMap<String,List<實體>>();
5.誰說private 不能new了?

Ⅷ map<string,string>在c99中怎麼初始化,或者說怎麼賦值

map<string,string>mymap;
//添加元素
mymap.insert(pair<string,string>("haha","hehe"));
mymap.insert(map<string,string>::value_type("haha","hehe"));
mymap["haha"]="hehe";

參考代碼如下:

#include<iostream>
#include<map>
usingnamespacestd;
intmain()
{
typedefmap<string,string>::iteratorm_itor;
map<string,string>mymap;
mymap["223"]="adflijd";
mymap.insert(pair<string,string>("235dadf","sdflisha"));
mymap.insert(map<string,string>::value_type("dlfkja","ajefoi"));

for(m_itorit=mymap.begin();it!=mymap.end();it++)
cout<<it->first<<""<<it->second<<endl;

return0;
}

運行結果如下:

Ⅸ 關於java map 初始化,遍歷,排序的幾個解答

Map介面同Set介面和List介面有所不同,Map介面是通過鍵值對來存儲元素的,存儲元素時需要提供一個鍵值(Key),鍵值不能重復,查詢元素時也需要提供鍵值(Key),類似於地址中的街道門牌號,通過門牌號確定唯一的地址。Map介面有多個實現類,分別是HashMap、LinkedHashMap、TreeMap、Propeties。

因為Map存儲的是鍵值對,因此不能用迭代器、foreach等方法遍歷Map。如果需要遍歷Map時,可以通過Map的keySet方法返回HashMap中key值的集合,通過遍歷Key值集合讀取HashMap中的元素。

摘自Map介面及其實現類

閱讀全文

與javamap怎麼直接初始化相關的資料

熱點內容
win10開啟藍光護眼 瀏覽:745
如何網路共享掃描儀 瀏覽:19
聯盟28級去哪裡升級好 瀏覽:687
電腦不能網路連接 瀏覽:651
現場監理文件多少卷 瀏覽:807
vbnet同步資料庫 瀏覽:314
招商銀行app在哪裡查銀行狀態 瀏覽:124
除了沙發管家還有什麼app 瀏覽:44
蘋果怎麼更改安裝包文件夾 瀏覽:892
40歲以上看什麼app 瀏覽:758
手機網路怎麼這么卡 瀏覽:270
jstab定位 瀏覽:925
win10有產品密匙 瀏覽:971
張藝興微信粉絲群 瀏覽:432
在哪個app看各個博導招生信息 瀏覽:611
hp280prog2mt裝win10 瀏覽:733
linux安裝vnc包 瀏覽:740
哪個網站房子掛牌價靠譜 瀏覽:16
迷你編程迷小酷碎片獲取後怎麼激活 瀏覽:286
微信網頁版登陸地址 瀏覽:628

友情鏈接