Hashmap,ArrayList ...如何让ArrayList将所有条目加在一起?

时间:2017-12-13 17:58:22

标签: java arraylist hashmap

道歉,如果这很简单,我对编程相对较新,并提前感谢任何帮助。好吧,正如标题中简要提到的,我已经在里面创建了一个带有ArrayList的HashMap。目前,我可以使用.getValue

检索ArrayList中的条目

我希望能够检索通过GUI创建的所有条目(这是我创建ArrayList的原因),但我发现很难实现这一点。因此,例如,如果用户输入50,45,40 ......现在它将返回40(最后输入的数字)。我希望能够检索所有3个数字。

有什么建议吗?

这是我的代码/ hashmap:

 public class arrayList {

 HashMap<String, ArrayList<Integer>> myMap = new HashMap<String, ArrayList<Integer>>();


public arrayList() {}



 public void addEntryMN( String mod, Integer number ) {

ArrayList<Integer> num = new ArrayList<Integer>();
num.add(number);

myMap.put(mod, num);
 }
 }

2 个答案:

答案 0 :(得分:0)

问题似乎措辞不力。 我将假设您要存储给定密钥的所有值。

答案:在添加值之前从地图中获取数组值。

ArrayList<Integer> numberList = myMap.get(mod);

if (numberList == null)
{
    numberList = new LinkedList<>();
}

num.add(number);

myMap.put(mod, num);

通常,首选的是LinkedList而不是arraylist,它在增长时具有较少的开销,并且在迭代列表时具有相同的性能。

答案 1 :(得分:0)

最干净的方法是使用Java 8的流:

int sum = list.stream().reduce(0, (val1, val2) -> val1 + val2);

说明:汇总集合中的值是“减少”。操作 - 您将多个值减少为单个值 - 在这种情况下通过添加它们。 0(零)是&#39;标识&#39;,即您开始添加的值,以及时髦的lambda(val1,val2) - &gt; val1 + val2,告诉我们应该用集合中的int来做什么:在这种情况下你想要加分它们。

假设列表中的值为:1, 2, 2, 4,可以将流设想为按以下方式工作:

- 0 + 1 = 1
- 1 + 2 = 3
- 3 + 2 = 5
- 5 + 4 = 9