我想用for循环遍历字母表,并将每个字母添加到HashMap
for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) {
System.out.println(alphabet);
}
对我不起作用,因为我的HashMap
形式
HashMap<String, HashMap<String, Student>> hm;
我需要我的迭代器是一个字符串,但是
for(String alphabet = 'A'; alphabet <= 'Z';alphabet++) {
System.out.println(alphabet);
}
不起作用。
基本上,我想这样做:
for i from 'A' to 'Z' do
hm.put(i, null);
od
有什么想法吗?
答案 0 :(得分:7)
基本上将char转换为字符串,如下所示:
for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) {
hm.put(""+alphabet, null);
}
虽然&#34;&#34; +字母表效率不高,因为它归结为对StringBuilder的调用
等效但更有效的方法可以
String.valueOf(alphabet)
或
Character.toString(alphabet)
实际上是相同的。
答案 1 :(得分:1)
您无法将char
分配给String
,也无法使用++
增加字符串。您可以按照第一个示例中的char
方式进行迭代,并将char
转换为String
,如下所示:
for(char letter = 'A'; letter <= 'Z'; letter++) {
String s = new String(new char[] {letter});
System.out.println(s);
}
答案 2 :(得分:1)
第一个问题:当您使用HashMap
时,您应该将键映射到值。你不只是把东西放在哈希映射中。你想写的那封信是值吗?那关键是什么?这是关键吗?那么价值是多少?
您可能认为使用“null”作为值是一个好主意,但您应该问自己:在这种情况下,我应该使用地图吗?也许使用HashSet
是一个更好的主意?
第二个问题是HashMap
与所有java集合一样,只接受对象 - 作为键和值。如果你想使用一个字符作为键,你可以将你的地图定义为Map<Character,Map<String,Student>>
,这将自动装箱你的角色(将其转换为Character
类型的对象)或者你可以转换角色到使用
Character.toString(alphabet);
答案 3 :(得分:0)
在具有Stream API的Java 8中,您可以执行此操作。
IntStream.rangeClosed('A', 'Z').mapToObj(var -> String.valueOf((char) var)).forEach(System.out::println);