PriorityQueue 到整数数组
Posted
技术标签:
【中文标题】PriorityQueue 到整数数组【英文标题】:PriorityQueue to Integer array 【发布时间】:2021-06-22 08:13:10 【问题描述】:有没有更好的方法将PriorityQueue<int[]> pq
转换为int[pq.size()][pq.peek().length]
?
pq.toArray()
给出了一个 Object
数组,我不太确定如何将其转换为 int
数组。
我尝试过的一种方法是:
PriorityQueue<int[]> pq = new PriorityQueue<int[]>();
int[] fin = new int[pq.size()];
for(int i=0;i<pq.size();i++)
fin[i] = pq.remove();
但我正在寻找更好的时间优化解决方案。
【问题讨论】:
pq.toArray(new int[][])
非常感谢@zhh。这就像魅力一样。 :)
【参考方案1】:
PriorityQueue
实现了Collection#toArray(T[] a)
,您可以这样使用:
int[][] fin = pq.toArray(new int[0][0]);
请注意,根据您的问题,您使用了toArray()
的无类型版本,它不接受任何参数并返回Object[]
。这相当于toArray(new Object[0])
。
【讨论】:
【参考方案2】:使用 Java Stream API 可以解决这个问题。
int[] fin = pq.stream()
.map(String::valueOf)
.mapToInt(Integer::parseInt)
.toArray();
例子:
import java.util.Arrays;
import java.util.PriorityQueue;
public class Main
public static void main(String[] args)
PriorityQueue<Integer> pq = new PriorityQueue<>();
pq.add(1);
pq.add(2);
pq.add(3);
int[] fin = convertToIntArray(pq);
System.out.println(Arrays.toString(fin));
private static int[] convertToIntArray(PriorityQueue<Integer> pq)
return pq.stream()
.map(String::valueOf)
.mapToInt(Integer::parseInt)
.toArray();
【讨论】:
以上是关于PriorityQueue 到整数数组的主要内容,如果未能解决你的问题,请参考以下文章
为啥我不能将 PriorityQueue 存储到 MongoDB 中