javamapfor循环
‘壹’ java循环遍历Map的几种方法
第一种用for循环
Java代码
for(Map.Entry<String, String> entry:map.entrySet()){
System.out.println(entry.getKey()+"--->"+entry.getValue());
}
第二种用迭代
Java代码
Set set = map.entrySet();
Iterator i = set.iterator();
while(i.hasNext()){
Map.Entry<String, String> entry1=(Map.Entry<String, String>)i.next();
System.out.println(entry1.getKey()+"=="+entry1.getValue());
}
用keySet()迭代
Java代码
Iterator it=map.keySet().iterator();
while(it.hasNext()){
String key;
String value;
key=it.next().toString();
value=map.get(key);
System.out.println(key+"--"+value);
}
用entrySet()迭代
Java代码
Iterator it=map.entrySet().iterator();
System.out.println( map.entrySet().size());
String key;
String value;
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey().toString();
value=entry.getValue().toString();
System.out.println(key+"===="+value);
}
‘贰’ java怎样循环往map中存值
Mapmap=newHashMap();
Iteratorit=map.keySet().iterator();
Objectkey;
Objectvalue;
while(it.hasNext()){
key=it.next();
value=map.get(key);
System.out.println(key+":"+value);
}
用keySet得到map 键的set集合 然后用这个集合去迭代
‘叁’ java Map 怎么遍历
关于java中遍历map具体有四种方式,请看下文详解。
1、这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用。
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());
}
2、在for-each循环中遍历keys或values。
如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Integer key : map.keySet()) {
System.out.println("Key = "+ key);
}
for(Integer value : map.values()) {
System.out.println("Value = "+ value);
}
该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
3、使用Iterator遍历
使用泛型:
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry<Integer, Integer> entry = entries.next();
System.out.println("Key = "+ entry.getKey() + ", Value = "+ entry.getValue());
}
不使用泛型:
Map map = newHashMap();
Iterator entries = map.entrySet().iterator();
while(entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = "+ key + ", Value = "+ value);
}
4、通过键找值遍历(效率低)
Map<Integer, Integer> map = newHashMap<Integer, Integer>();
for(Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = "+ key + ", Value = "+ value);
}
假设Map中的键值对为1=>11,2=>22,3=>33,现用方法1来遍历Map代码和调试结果如下:
(3)javamapfor循环扩展阅读:
1、HashMap的重要参数
HashMap 的实例有两个参数影响其性能:初始容量 和加载因子。容量是哈希表中桶的数量,初始容量只是哈希表在创建时的容量。
加载因子 是哈希表在其容量自动增加之前可以达到多满的一种尺度。当哈希表中的条目数超出了加载因子与当前容量的乘积时,则要对该哈希表进行 rehash 操作(即重建内部数据结构),从而哈希表将具有大约两倍的桶数。
在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101。
2、HashMap的同步机制
注意,此实现不是同步的。 如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须保持外部同步。
(结构上的修改是指添加或删除一个或多个映射关系的任何操作;以防止对映射进行意外的异步访问,如下:
Map m = Collections.synchronizedMap(new HashMap(...));
‘肆’ java中的for循环
迭代器遍历的简单写法,是一个加强型的for循环
for(String str : strFile)-->for(int i=0;i<strFile.length;i=+){ String str = strFile[i];}
for(Class obj: List<Class>)
‘伍’ Java的HashMap与for-each循环共用
这样的写法是没有问题,肯定是别的地方的问题
import java.util.HashMap;
public class MapKeysetTest{
public static void main(String args[]){
HashMap<String, String> map = new HashMap<String, String>();
map.put("a", "aa");
map.put("b", "bb");
map.put("c", "cc");
for(String s:map.keySet()){
System.out.println(s);
}
}
}
这样是能正确打开出来 a\b\c的
‘陆’ 工作中你是如何用Java 遍历 Map的呢
在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。
既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等)
方法一、 在for-each循环中使用entries来遍历
这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。
总结
如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
‘柒’ java语言如何循环读取Map对象内的数据
Set<Object> keySet = map.keySet();//获取map的key值的集合,set集合
for(Object obj:keySet){//遍历key
System.out.println("key:"+obj+",Value:"+map.get(obj));//输出键与值
}
‘捌’ java map 用for循环的问题
亲,你要搞清楚。集合类的foreach只能用来遍历,不能进行修改操作的。即不能修改、删除、添加元素。
只能遍历。如果进行了修改操作的话。会抛出java.util.异常
,表示你不同在遍历的同时,又进行修改。
如果你非得,要做修改操作。请选择正常的for循环。以List为例。
List<String>list=newArrayList();
for(inti=0;i<10;i++){
list.add(i+"");
}
System.out.println(list.size());//10
for(inti=0;i<list.size();i++){
if(list.get(i).equals("1")){
list.remove(list.get(i));
}
}
System.out.println(list.size());//9
‘玖’ java 关于Map 的两个for循环的区别是什么
//这里是调用Map的entrySet方法迭代出Map中的Entry对象,
//这里Entry对象中其实也是存放的为Key-->Value格式的键值对,其有getKey和getValue方法分别可以取其Key值和Value值
//Entry中的Key--Value键值对和Map中的每一个键值对相对应
//返回映射中包含的映射关系的Set视图。也是一个Set,而Set中每个元素是内部类Map.Entry。
for (Map.Entry<Integer, String> entry : lhmap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue() + "\t");
}
//这里使用迭代器首先迭代出Map的所有Key值,返回映射中包含的键的Set视图。 是key的Set集合
//根据Key值取出Map中的Value值
for (Iterator<Integer> it = lhmap.keySet().iterator(); it.hasNext();) {
Object key = it.next();
System.out.println(key + "=" + lhmap.get(key));
}
//你可以给Map中存N多个数据,然后用上面的方法测试下性能,你回发现entrySet方法比keySet效率会高很多
有不明白的地方 请追问。
‘拾’ Java学生信息表,Map存储对象,Map使用泛型和增强for循环来做
1、首先定义学生类 ,这里只定义年龄和它的设置、获取方法,其他属性自己补充。
Class Student{
private int age;
private int getAge(){
return this.age;
}
private void setAge(int age){
this.age = age;
}
2、然后定义TestMain类,
Class TestMain{
public static void main(String args【】){
//这里,后续的步骤里的代码都写在这里。
}
}}
3.然后定义Map 以及获取输入的逻辑,这里只写了部分内容,其他内容自己补充,形式是一样的,类型注意下:
Map< Integer, Student> myMap = new Map<Integer, Student>();//这里用了泛型注意,不懂自己网络下泛型。
Scanner sc = new Scanner(System.in);
System.out.println("请输入你的姓名:");
String name = sc.nextLine();
System.out.println("请输入你的年龄:");
int age = sc.nextInt();
4、创建对象并赋值,然后把对象存入map中:
Student zhangsan = new Student();
zhangsan.age = age;
zhangsan.name = name;
myMap.put(zhangsan.number,zhangsan);//注意这里的zhangsan.number是他的学号,我前面没有定义,需要你自己补充定义和补充赋值。
5、看来你已经做完了,不需要 我继续回答了。