導航:首頁 > 編程語言 > 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怎麼直接初始化相關的資料

熱點內容
電腦無法向u盤傳輸文件 瀏覽:823
bpn配置文件 瀏覽:932
501完美越獄工具 瀏覽:119
中間夾菜單裡面不能顯示壓縮文件 瀏覽:952
如何指導小學生參加編程比賽 瀏覽:275
物業的招標文件有哪些 瀏覽:452
保存游戲文件名非法或只讀 瀏覽:258
js怎麼做圖片時鍾 瀏覽:451
華為應用裡面有了app說明什麼 瀏覽:801
資料庫中xy是什麼意思 瀏覽:893
u盤打不開提示找不到應用程序 瀏覽:609
網站功能介紹怎麼寫 瀏覽:954
word在試圖打開文件時錯誤 瀏覽:108
主板無vga插槽怎麼連接編程器 瀏覽:521
錄視頻文件在哪裡刪除 瀏覽:881
word2013如何插入文件 瀏覽:233
proe教程百度網盤 瀏覽:197
如何控制遠程linux伺服器 瀏覽:740
it教學app有哪些 瀏覽:34
怎麼在ps摳的圖變成矢量文件 瀏覽:405

友情鏈接