将队列转换为长数组?

时间:2016-12-14 22:43:37

标签: java arrays list queue

我有Queue我要将其转换为long[]并将其传递给我的计算百分位数的方法。

private final ConcurrentLinkedQueue<Long> holder = new ConcurrentLinkedQueue<>();

我正在使用ConcurrentLinkedQueue,因为我正在插入从多线程应用程序到我上面的holder队列的毫秒级延迟,所以我想要线程安全。

现在我的问题是如何将holder队列转换为long[]长数组,以便将其传递给我的下方法?有没有办法做到这一点?

  public static long[] percentiles(long[] latencies, double... percentiles) {
    Arrays.sort(latencies, 0, latencies.length);
    long[] values = new long[percentiles.length];
    for (int i = 0; i < percentiles.length; i++) {
      int index = (int) (percentiles[i] * latencies.length);
      values[i] = latencies[index];
    }
    return values;
  }

1 个答案:

答案 0 :(得分:0)

看起来ConcurrentLinkedQueue#toArray(T[] a)会让你获得90%的胜利:

Long[] longs = holder.toArray(new Long[0]);

Long[]转换为long[]作为练习留给学生。 ; - )