导航:首页 > 编程语言 > 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怎么直接初始化相关的资料

热点内容
windows8网络连接 浏览:442
怎么快速增加qq群人数 浏览:919
锤子视频播放器文件不存在 浏览:707
苹果手机怎么清理app缓存 浏览:682
花园战争2豪华升级包 浏览:517
电脑无法向u盘传输文件 浏览:823
bpn配置文件 浏览:932
501完美越狱工具 浏览:119
中间夹菜单里面不能显示压缩文件 浏览:952
如何指导小学生参加编程比赛 浏览:275
物业的招标文件有哪些 浏览:452
保存游戏文件名非法或只读 浏览:258
js怎么做图片时钟 浏览:451
华为应用里面有了app说明什么 浏览:801
数据库中xy是什么意思 浏览:893
u盘打不开提示找不到应用程序 浏览:609
网站功能介绍怎么写 浏览:954
word在试图打开文件时错误 浏览:108
主板无vga插槽怎么连接编程器 浏览:521
录视频文件在哪里删除 浏览:881

友情链接