【问题标题】:looping through the alphabet as String作为字符串循环遍历字母表
【发布时间】:2015-01-04 15:32:04
【问题描述】:

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

有什么想法吗?

【问题讨论】:

标签: java string loops for-loop


【解决方案1】:

基本上把char转成字符串,像这样:

for(char alphabet = 'A'; alphabet <= 'Z';alphabet++) {
    hm.put(""+alphabet, null);
}   

虽然 ""+alphabet 效率不高,因为它归结为对 StringBuilder 的调用

等效但更有效的方法可以是

String.valueOf(alphabet)

Character.toString(alphabet)

实际上是一样的。

【讨论】:

    【解决方案2】:

    您不能将char 分配给String,或使用++ 递增字符串。您可以像在第一个示例中那样迭代char,然后将char 转换为String,如下所示:

    for(char letter = 'A'; letter <= 'Z'; letter++) {
        String s = new String(new char[] {letter});
         System.out.println(s);
    }
    

    【讨论】:

      【解决方案3】:

      第一个问题:当您使用HashMap 时,您应该将键映射到值。您不只是将某些内容放入哈希映射中。你想放的那封信,是价值吗?那么关键是什么?是钥匙吗?那么价值是多少呢?

      您可能认为使用“null”作为值是个好主意,但您应该问自己:在这种情况下,我应该使用映射吗?也许使用HashSet 是一个更好的主意?

      第二个问题是HashMap,像所有java 集合一样,只接受对象——既作为键又作为值。如果您想使用一个字符作为键,您可以将您的地图定义为Map&lt;Character,Map&lt;String,Student&gt;&gt;,这将自动装箱您的字符(将其转换为Character 类型的对象),或者您可以使用将字符转换为字符串

      Character.toString(alphabet);
      

      【讨论】:

        【解决方案4】:

        在带有 Stream API 的 Java 8 中,您可以做到这一点。

         IntStream.rangeClosed('A', 'Z').mapToObj(var -> String.valueOf((char) var)).forEach(System.out::println);
        

        【讨论】:

          猜你喜欢
          • 2020-02-16
          • 2014-09-19
          • 2023-01-24
          • 1970-01-01
          • 1970-01-01
          • 2016-01-24
          • 2023-03-23
          • 1970-01-01
          相关资源
          最近更新 更多