hashmap,arraylist ..如何使arraylist将所有条目总结在一起



很抱歉,如果这很简单,我对编程相对较新,并感谢任何帮助。好的,正如标题中简要提到的那样,我创建了一个带有阵列列表的哈希图。目前,我能够使用.getValue

在阵列列表中检索一个条目

我希望能够检索通过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);
 }
 }

这个问题的措辞似乎很差。我将假设您要为给定键存储所有值。

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

ArrayList<Integer> numberList = myMap.get(mod);
if (numberList == null)
{
    numberList = new LinkedList<>();
}
num.add(number);
myMap.put(mod, num);

通常,更喜欢LinkedList而不是ArrayList,它在生长时的开销较少,并且在列表上迭代时具有相同的性能。

最干净的方法是与Java 8的流相处:

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

说明:总结集合中的值是"降低"操作 - 在这种情况下,您将多个值降低到单个值 - 通过添加它们。0(零)是"身份",即您开始添加的值,而时髦的lambda(val1,val2) -> val1 val2,告诉收集中的ints应该做什么:在这种情况下您想接触它们。

假设列表中的值是: 1, 2, 2, 4流可以放置为工作如下:

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

最新更新