带有arraylist的哈希映射并从中创建新的arraylist

时间:2014-11-22 10:58:09

标签: java arraylist hashmap

我正在尝试清理代码,并希望在代码中使用优化的approches。

目前我有这种类型的hashmap  private HashMap<String, ArrayList<allProperty>> fData;

所以数据每5秒从服务器发出一次。我每隔5秒更新一次这个hashmap就像这样

       fData.put("Student", allStudent);
       fData.put("Emp", allEmp);
       fData.put("Other", allOther);

所以从allproperty类对象中,有标记字段,我试图为所有键提取该标记字段并创建整数的新arraylist,这样我就可以每隔5秒在创建的arraylist中附加标记。

我之前为每个学生,emp和其他人使用了不同的arraylist,它工作正常,但似乎很多代码的重复。这就是我试图用哈希映射

实现它的原因

我正在尝试这样的东西,但它没有附加数据......

for (String type: allTypes) {
            if(fData.get(type).size() > 0){
                arraySort(fData.get(type));
                temp = new ArrayList<Integer>();
                temp.add(fData.get(type).get(0).marks);
            }
            cData.put(type, temp);

cType是下面给出的类型的hashMap和

 private HashMap<String, ArrayList<Integer>> cData;

其中allTypes是

 signalTypes.add("Student");
    signalTypes.add("Emp");
    signalTypes.add("Other");

最后我想要三个带键的新arraylist并且能够每5秒追加一次数据。感谢

1 个答案:

答案 0 :(得分:2)

  1. 获取ArrayList
  2. 2a上。如果它不存在 - 请填写new ArrayList

    2B。否则使用此ArrayList。这是可变的。因此,您可以在此对象上调用.add,它将在HashMap

    中更新

    试试这个:

    for (String type: allTypes) {
            if (fData.get(type).size() > 0) {
                arraySort(fData.get(type));
                if (cData.get(type) == null) {
                    temp = new ArrayList<Integer>();
                    temp.add(fData.get(type).get(0).marks);
                    cData.put(type, temp);
                } else {
                    cData.get(type).add(fData.get(type).get(0).marks);
                }
            }
    }