今天在写作业的时候发现了一个问题,作业题目如下:
代码如下:
import java.util.HashMap;
import java.util.Random;
public class Homework3 {
public static void main(String[] args) {
HashMap<Character, Integer> map = new HashMap<>();
Random random = new Random();
for (int i = 0; i < 50; i++) {
char c = (char) (random.nextInt(26)+'a');
System.out.print(c+" ");
if (!map.containsKey(c)){
map.put(c,1);
}else {
map.put(c,map.get(c)+1);
}
}
System.out.println();
for (Character cc:map.keySet()){
System.out.println(cc+":"+map.get(cc));
}
}
}
运行结果如下:
u a v c s m k w c x f s h a a o q g l w w o v z j q g g a g p h n o r r a p r b h m c g v o k y f b
a:5
b:2
c:3
f:2
g:5
h:3
j:1
k:2
l:1
m:2
n:1
o:4
p:2
q:2
r:3
s:2
u:1
v:3
w:3
x:1
y:1
z:1
key为字符串类型时,map调用keySet方法后是会对key进行升序排序吗?
然后对泛型进行修改,将字符改为整形,发现规律一致。
但是hashMap又是无序的,在数据量多的时候会出现无序情况,但是这个程序经过多次运行,都为有序排列,令人不解。