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