英文:
Is there a way to put all the values of a HashMap in an array?
问题
Sure, here's the translated code part:
我有一个HashMap,假设它的条目是`{1=1, 3=2, 4=1, 5=1, 6=1}`。我想创建一个仅包含`[1,2,1,1,1]`的数组,是否可能?
为了提供一些上下文,我试图获取可以使用索引进行迭代的内容,任何类似数组或ArrayList的东西都可以(项目的顺序很重要)。
我尝试使用以下代码将值分配给数组:
for (int j=0; j < frequencies.size(); j++){
for (int i : frequencies.values()) {
arr[j] = i;
}
}
`frequencies.values()`(frequencies是我的HashMap的名称)没有特别有用,我尝试过迭代它(没有成功),将其分配给`Collections`也没有用。我还尝试将`myHashMap.values()`分配给ArrayList,显然没有成功。
您有什么建议?
If you have any further questions or need additional assistance, feel free to ask.
英文:
I have a HashMap, let's say, with entries {1=1, 3=2, 4=1, 5=1, 6=1}
. I'd like to be able to create an array just containing [1,2,1,1,1]
. Is that possible?
To give some context, I'm trying to get something I can iterate over using an index, and anything like an array or ArrayList would work (the order of the items does matter).
I tried assigning the values to an array using
for (int j=0; j< frequencies.size(); j++){
for (int i : frequencies.values()) {
arr[j] = i;
}
}
frequencies.values()
(frequencies is the name of my HashMap) wasn't of particular use, and I tried both iterating over that (didn't work) and assigning it to Collections
wasn't useful. I tried assigning myHashMap.values()
to an ArrayList as well, which obviously didn't work.
What would you recommend?
答案1
得分: 2
frequencies.values()
的类型是通用的 Collection
,不一定是 ArrayList
。 因此,要将其转换为 ArrayList
,您必须进行 复制 -- 幸运的是,ArrayList
有一个接受通用 Collection
并复制它的构造函数。 因此,您只需编写 new ArrayList<>(frequencies.values())
。
英文:
The type of frequencies.values()
is a generic Collection
, not necessarily an ArrayList
. As a result, to convert it to an ArrayList
, you must copy it -- fortunately, ArrayList
has a constructor that accepts a generic Collection
and copies it. As a result, all you have to do is write new ArrayList<>(frequencies.values())
.
答案2
得分: 1
这是一种有点巧妙但对我来说效果很好的方法... 它假设你的哈希映射中的数值是 Long 型。
从你的 "frequencies" 哈希映射中收集值:
1. Collection<Long> values_from_hashmap = frequencies.values();
从值的集合创建一个数组列表:
2. ArrayList<Long> listOfValues = new ArrayList<Long>(values_from_hashmap);
嘭,你的 listOfValues
数组列表将包含原始哈希映射中的值。
英文:
This is a kinda hacky way but it works well for me.... it assumes the values of the numbers from your hashmap are Longs.
Collect the values from your "frequencies" hashmap:
1. Collection<Long> values_from_hashmap = frequencies.values();
Create an array list from the collection of values:
2. ArrayList<Long> listOfValues = new ArrayList<Long>(values_from_hashmap);
Boom your listOfValues array list will contain the values from the orig hashmap
答案3
得分: 1
以下是翻译好的部分:
"Is there a way to put all the values of a HashMap in an array?" 可以将HashMap的所有值放入数组吗?
"Since you did specify an array as the target you can do it like this." 既然您已经将数组指定为目标,您可以这样做。
"Prints" 打印
"[1, 2, 1, 1, 1]"
英文:
>Is there a way to put all the values of a HashMap in an array?
Since you did specify an array as the target you can do it like this.
Map<Integer,Integer> map = new HashMap<>(Map.of(1,1,3,2,4,1,5,1,6,1));
int[] vals = map.values().stream().mapToInt(Integer::valueOf).toArray();
System.out.println(Arrays.toString(vals));
Prints
[1, 2, 1, 1, 1]
</details>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论