道歉,如果这很简单,我对编程相对较新,并提前感谢任何帮助。好吧,正如标题中简要提到的,我已经在里面创建了一个带有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);
}
}
答案 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