Java:在 HashMap 中使用 ArrayList 以 String 作为键

标签 java arraylist hashmap

我不知道我的错误在哪里,我得到的是一个包含以下值的字符串数组,逐行:

San Jose -> San Francisco
San Jose -> Anchorage
New York -> Anchorage
New York -> San Jose
New York -> San Francisco
New York -> Honolulu
Anchorage -> New York
Anchorage -> San Jose
Honolulu -> New York
Honolulu -> San Francisco
Denver -> San Jose
San Francisco -> New York
San Francisco -> Honolulu
San Francisco -> Denver

我想使用右侧的字符串作为键将这些值放入 HashMap 中,并将值设置为 ArrayList,这样如果我询问“San Jose”的目的地,它将遍历该列表并返回“旧金山”和“安克雷奇”。我还没有设法使键值关系正常工作。原因是当方法运行完毕时。对于任何城市,该值都将是其最后一次迭代的值,(旧金山)为所有键返回纽约、檀香山和丹佛。

    private void createDataBase()
{   
    ArrayList<String> tempValues = new ArrayList <String>();
    for (int i = 0; i < database.size();i++) 
    {
        String line = database.get(i);
        //String value = "";  
        if (line.length() > 1)
        {
            int keyStart = 0;
            int keyEnd = line.indexOf("-");

            int valueStart = keyEnd+3;
            int valueEnd = line.length();

            String key = line.substring(keyStart, keyEnd);
            String value = line.substring(valueStart, valueEnd);
            tempValues.add(value);
            System.out.println(keyValueDatabase.toString());
            keyValueDatabase.put(key, tempValues);

        }
        else 
        {
            tempValues.clear();
        }

    }
    System.out.println(keyValueDatabase.toString());
}

最佳答案

除非您无法使用外部库,否则您可能需要考虑 MultiValueMap

关于Java:在 HashMap 中使用 ArrayList 以 String 作为键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13092809/

相关文章:

android - 保存 Arraylist<Hashmap> 用于旋转后显示

java - 静态hashMap的空指针异常

Java - 线程中出现异常 "main"java.util.ConcurrentModificationException

java - 根据多个键对 map 列表进行排序

java - Android hashmap 以错误的格式转换为 JSON

java - 如何使用 invokeAll() 让所有线程池完成任务?

java - 访问 selenium webdriver javascriptexecutor 中的 java 变量

java - 将类名作为参数传递

Java:具有两个键的 HashMap

java - 使用 ArrayList 手动访问 ArrayList