从List <list <integer>&gt;转换列出<int []>

时间:2017-04-15 03:34:27

标签: java

我想从List<int[]>转换为List<Integer> list = new ArrayList<>(); List<List<Integer>> arr = matrix(list); int [] temp2 = arr; ,但我不知道该怎么做。

我尝试这样做:

<style type="text/css">
<!--

.figure{
display:table;
width:50px;
}
.figure.caption{
display:table-caption;
caption-side:bottom;
}

-->
</style>

但这是错误的

2 个答案:

答案 0 :(得分:1)

我不确定你真正想要实现什么,但一个简单的解决方案是将每个List<Integer>转换为int[]的双循环。您可以使用AFAIK这样的简单方法来完成此操作,没有内置库为您执行此操作(因为类型Listint[]的异构性):

// cycle this for each List<Integer>
int[] toIntArray(List<Integer> a_list){
    int[] ret = new int[a_list.size()];
    for(int i = 0; i < ret.length; i++)
      ret[i] = a_list.get(i);
    return ret;
}

更新Java 8

感谢Java 8流,现在您可以简单地编写(再次示例是针对单个List<Integer>

int [] my_ints = list.stream().mapToInt(Integer::intValue).toArray();

<强>更新

当您要求完整的解决方案时,我会写下一种可能的方法来实现您的需求:

List<int[]> intArrayList = new ArrayList();

for(List<Integer> intList : intListList){
    int[] intArray = new int[intList.size()];
    for(int i = 0; i < intArray.length; ++i){
       intArray[i] = intList.get(i);
    }
    intArrayList.add(intArray);
}

答案 1 :(得分:0)

 i want to convert from List<List<Integer>> to List<int[]> 

由于某种原因你调用arr的matrix()的返回值在下面称为intListList。

// You can map the List<Integer> items in the List<List<Integer> to int[] items in a List<int[]> like so:

List<int[]> intArrList = intListList.stream()
    .map(Collection::stream)
    .map(Stream::mapToInt)
    .map(IntStream::toArray)
    .collect(Collectors.toList())

// or if you prefer

List<int[]> intArrList = intListList.stream()
    .map(ints -> ints.stream().mapToInt().toArray())
    .collect(Collectors.toList())

// For Java before 8
List<int[]> intArrList = new ArrayList();
for(List<Integer> ints : intListList){
    int[] intArr = new int[ints.size()];
    for(int i = 0; i < intArr.length; ++i){
       intArr[i] = ints.get(i);
    }
    intArrList.add(intArr);
}