【问题标题】:Convert queue into long array?将队列转换为长数组?
【发布时间】:2016-12-14 22:43:37
【问题描述】:

我有一个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;
  }

【问题讨论】:

标签: java arrays list queue


【解决方案1】:

看起来ConcurrentLinkedQueue#toArray(T[] a) 可以让你完成 90% 的路程:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-10
    • 2020-02-13
    • 2018-12-23
    相关资源
    最近更新 更多