循环遍历map,循环遍历字符串

http://www.itjxue.com  2023-01-13 00:04  来源:未知  点击次数: 

Map循环遍历常用方法

这里我简单写写我知道的几种方法------注意循环对象不要为null哦!

第1种方法:通过map.entrySet()循环获取数据

第2种方法:通过map.keySet()循环获取数据

第3种方法:通过map.values()循环获取数据,但是无法获取key值

第4种方法:通过iterator循环获取数据,优点在于可以添加或删除数据

map.keySet()和map.values()的迭代就不写了,其实就是Set和List的迭代。

性能对比:

同时遍历key与value时,keySet与entrySet方法的性能差异取决于key的具体情况,包括复杂度,离散度,冲突率等。entrySet一次性取出key与value是有性能损耗的,当这个损失小于HashMap查找value的开销时,entrySet的性能优势就会体现出来。当key是比较简单或者是比较连贯的数据的时候,使用keySet会相对高效。但是如果随着key的复杂化,entrySet更有优势。所以一般建议使用entrySet,它相对来说,比较稳定。

只遍历key时,keySet方法更为合适,因为entrySet将无用的value也给取出来了,浪费了性能和空间。

只遍历value时,使用vlaues方法是最佳选择,entrySet会略好于keySet方法。

java中map的常用遍历方法有哪些?

ava中map的常用遍历的具体方法有:

一 、在for-each循环中使用entries来遍历。这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

二、 在for-each循环中遍历keys或values。如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

三、使用Iterator遍历。

四、通过键找值遍历(效率低)。

总结:如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。

map集合有几种遍历方式

方法一 在for-each循环中使用entries来遍历

这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

MapInteger, Integer map = new HashMapInteger, Integer();

for (Map.EntryInteger, Integer entry : map.entrySet()) {

System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。

方法二 在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

MapInteger, Integer map = new HashMapInteger, Integer();

//遍历map中的键

for (Integer key : map.keySet()) {

System.out.println("Key = " + key);

}

//遍历map中的值

for (Integer value : map.values()) {

System.out.println("Value = " + value);

}

该方法比entrySet遍历在性能上稍好

方法三使用Iterator遍历

使用泛型:

MapInteger, Integer map = new HashMapInteger, Integer();

IteratorMap.EntryInteger, Integer entries = map.entrySet().iterator();

while (entries.hasNext()) {

Map.EntryInteger, Integer entry = entries.next();

System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());

}

不使用泛型:

Map map = new HashMap();

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);

}

方法四、通过键找值遍历(效率低)

MapInteger, Integer map = new HashMapInteger, Integer();

for (Integer key : map.keySet()) {

Integer value = map.get(key);

System.out.println("Key = " + key + ", Value = " + value);

}

总结

如果仅需要键(keys)或值(values)使用方法二。

如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。

否则使用方法一(键值都要)。

java Map 怎么遍历

java Map 遍历一般有四种方式

方式一: 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。

方式二: 在for-each循环中遍历keys或values。

如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。

该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

方式三:使用Iterator遍历

使用泛型:

不使用泛型:

你也可以在keySet和values上应用同样的方法。

方法四:? 通过键找值遍历(效率低)

作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。

因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。

总结:

如果仅需要键(keys)或值(values)使用方法二。

如果所使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。

否则使用方法一(键值都要)。

扩展资料:

类似的遍历算法:

二叉树的遍历算法

1、先(根)序遍历的递归算法定义:

若二叉树非空,则依次执行如下操作:

⑴ 访问根结点;

⑵ 遍历左子树;

⑶ 遍历右子树。

2、中(根)序遍历的递归算法定义:

若二叉树非空,则依次执行如下操作:

⑴遍历左子树;

⑵访问根结点;

⑶遍历右子树。

3、后(根)序遍历得递归算法定义:

若二叉树非空,则依次执行如下操作:

⑴遍历左子树;

⑵遍历右子树;

⑶访问根结点。

参考资料:百度百科——Java

JAVA循环遍历Map的几种方法

第一种用for循环

Java代码

for(Map.EntryString, String entry:map.entrySet()){

System.out.println(entry.getKey()+"---"+entry.getValue());

}

第二种用迭代

Java代码

Set set = map.entrySet();

Iterator i = set.iterator();

while(i.hasNext()){

Map.EntryString, String entry1=(Map.EntryString, 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);

}

(责任编辑:IT教学网)

更多

推荐Discuz!建站文章