循环通过字母表作为字符串

时间:2014-11-07 18:49:59

标签: java string loops for-loop

我想用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

有什么想法吗?

4 个答案:

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