java - 如何使用循环将键/值从 StringBuilder 放入 HashMap 中? - java

标签 java hashmap

我在这里使用了多种技术,因此很难在网上找到帮助。 我需要填充 HashMap<String, String>我从 StringBuilder 的一部分获取值,然后将 key 添加到 ArrayList<String> 中,然后打印列表。但是当我打印时,我得到一个完整的列表 nulls 。我不知道为什么,我以为它会打印我从 StringBuilder 获得的值。它应该打印:Values taken from the hashmap keys: ABCDEFGHI 。 (我使用StringBuilder的原因是因为String是不可变的,这也是正确的想法吗?)

另外,我认为使用循环来打印列表是可以的,因为我的键实际上是数字。

我以前从未创建过 HashMap,所以也许我遗漏了一些东西。感谢您的帮助。

这是我的代码:

    // create HashMap from String
    StringBuilder alphaNum = new StringBuilder("1A2B3C4D5E6F7G8H9I");

    Map<String, String> myAlphaNum = new HashMap<String, String>(9);

    // for loop puts key and values in map, taken from String
    for (int i = 0; i < alphaNum.length();)
    {
        myAlphaNum.put(alphaNum.substring(i, ++i), alphaNum.substring(i, ++i));
    }
    if (myAlphaNum.containsKey(1))
        System.out.println("Key is there.");
    else
        System.out.println("Key is null.");

    // create ArrayList, add values to it using map keys
    ArrayList<String> arrayList = new ArrayList<String>();

    // for loop gets the "number" keys from HashMap to get the "letter" values
    for (int j = 1; j <= myAlphaNum.size(); j++)
        arrayList.add(myAlphaNum.get(j));


    System.out.print("Values taken from the hashmap keys: ");
    for (String list : arrayList)
        System.out.print(list);

控制台:

Key is null.

Values taken from the hashmap keys: nullnullnullnullnullnullnullnullnull

最佳答案

您正在使用 containsKey/get 并以整数作为参数,而您的 map 键定义为字符串。这就是你得到 null 的原因。

我建议使用Map<Integer, String> myAlphaNum = new HashMap<Integer, String>(9);在你的循环中myAlphaNum.put(Integer.parseInt(alphaNum.substring(i, ++i)), alphaNum.substring(i, ++i)); 。然后你就会得到你想要的输出。

您还可以 ArrayList采用 Collection 的构造函数直接作为参数(或只是 sysout myAlphaNum.values() )。

// create ArrayList, add values to it using map keys
ArrayList<String> arrayList = new ArrayList<String>(myAlphaNum.values());
System.out.println(arrayList); //[A, B, C, D, E, F, G, H, I]

关于java - 如何使用循环将键/值从 StringBuilder 放入 HashMap 中? - java ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27419301/

相关文章:

java - 从PDF文档中提取文本并生成结构化数据

java - 如何循环调用函数显示文件之间的父子关系

java - Java 中的默认 HashMap 探测

C++ stdext hashmap 效率 - 重组(?)

redis - 有没有办法将散列键的值设置为Redis中某个键的值

java - JAX-WS 网络服务的 JSON 输出?

Java Swing - 添加行 # 列(行标题)到 JTable

java - Spring Boot 和 Google SSO

java - MySQL 给出正确的输出,但 Java 引发异常

java - 在类中创建 HashMap ?