如何在 Java 中将 int\[\] 转换为 Integer\[\]?

新手上路,请多包涵

我是 Java 的新手,非常困惑。

我有一个长度为 4 int[] 的大数据集,我想计算 4 个整数的每个特定组合出现的次数。这与计算文档中的词频非常相似。

我想创建一个 Map<int[], double> 在迭代列表时将每个 int[] 映射到一个运行计数,但 Map 不采用原始类型。

所以我做了 Map<Integer[], Double>

我的数据存储为 ArrayList<int[]> ,所以我的循环应该是这样的:

 ArrayList<int[]> data = ... // load a dataset`

Map<Integer[], Double> frequencies = new HashMap<Integer[], Double>();

for(int[] q : data) {

    // **DO SOMETHING TO convert q from int[] to Integer[] so I can put it in the map

    if(frequencies.containsKey(q)) {
    frequencies.put(q, tfs.get(q) + p);
    } else {
        frequencies.put(q, p);
    }
}

我不确定在评论中我需要什么代码才能使这项工作将 int[] 转换为 Integer[] 。或者,也许我从根本上对执行此操作的正确方法感到困惑。

原文由 John 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 472
1 个回答

Native Java 8(一行)

使用 Java 8, int[] 可以轻松转换为 Integer[]

 int[] data = {1,2,3,4,5,6,7,8,9,10};

// To boxed array
Integer[] what = Arrays.stream( data ).boxed().toArray( Integer[]::new );
Integer[] ever = IntStream.of( data ).boxed().toArray( Integer[]::new );

// To boxed list
List<Integer> you  = Arrays.stream( data ).boxed().collect( Collectors.toList() );
List<Integer> like = IntStream.of( data ).boxed().collect( Collectors.toList() );

正如其他人所说, Integer[] 通常不是一个好的地图键。但就转换而言,我们现在拥有相对干净的本地代码。

原文由 Sheepy 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题