PriorityQueue 到整数数组
PriorityQueue to Integer array
有没有更好的方法将 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();
}
但我正在寻找更好的时间优化解决方案。
PriorityQueue
实现 Collection#toArray(T[] a)
,您可以像这样使用:
int[][] fin = pq.toArray(new int[0][0]);
请注意,根据您的问题,您使用了无参数的 toArray()
和 returns Object[]
的无类型版本。这相当于 toArray(new Object[0])
.
使用 Java 流 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<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();
}
但我正在寻找更好的时间优化解决方案。
PriorityQueue
实现 Collection#toArray(T[] a)
,您可以像这样使用:
int[][] fin = pq.toArray(new int[0][0]);
请注意,根据您的问题,您使用了无参数的 toArray()
和 returns Object[]
的无类型版本。这相当于 toArray(new Object[0])
.
使用 Java 流 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();
}
}