我想优先使用map存储多个值对一个键

时间:2016-02-25 09:48:39

标签: java

我想创建一个表,以便一个键存储多个值。这样我就可以计算出特定键的值的数量。我想创建一个日历类的东西,每个日期都会有一些任务编号。之后我可以根据某个特定日期计算任务数量。我无法使用TreeMap<Integer,ArrayList<Integer>>,因为我只能对整数插入列表,但我需要一次添加一个整数值。如果我使用TreeMap<Integer,Integer>,则在针对1个键值插入一个值后,当我为同一个键插入另一个值时,将替换先前的值。 我有一个功能,我必须验证密钥,然后为该键我将插入一个值。即一次可以插入一个值。 请参考图片请提供一些解决方案。

enter image description here

3 个答案:

答案 0 :(得分:1)

Google有一个名为'guava'的库,它有Multimaps 您可以将他们的jar添加到您的解决方案中并使用它 http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multimap.html

答案 1 :(得分:0)

对于Java,您可以使用Map<Calendar, List<Integer>>。 Calendar对象是键,值是Integer列表。

答案 2 :(得分:0)

您可以尝试类似的东西(只需粗略实施,您可以根据需要更改数据类型):

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;

public class Task {

    public static void main(String[] args) {
        Map<String, List<String>> task = new TreeMap<String, List<String>>();

        List<String> taskList1 = new ArrayList<String>();
        taskList1.add("234");
        taskList1.add("56");
        List<String> taskList2 = new ArrayList<String>();
        taskList2.add("23");
        taskList2.add("34");
        taskList2.add("124");

        task.put("1", taskList1);
        task.put("2", taskList2);

        for (Map.Entry<String, List<String>> entry : task.entrySet()) {
            System.out.println(entry.getKey() + "/" + entry.getValue());
        }
    }
}