Java和C#语言实现List<List<model>>除了遍历外换成List<model>

csharp java 文章 2023-03-16 10:22 902 0 全屏看文

AI助手支持GPT4.0

您可以使用Java 8中的Stream API将List<List<model>>转换为List<model>。具体来说,可以使用flatMap方法将嵌套的列表扁平化。以下是一个示例:

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

class Model {
    // Model类的实现
}

public class FlattenNestedList {
    public static void main(String[] args) {
        List<Model> innerList1 = Arrays.asList(new Model(), new Model());
        List<Model> innerList2 = Arrays.asList(new Model(), new Model(), new Model());
        List<List<Model>> nestedList = Arrays.asList(innerList1, innerList2);

        List<Model> flattenedList = nestedList.stream()
            .flatMap(List::stream)
            .collect(Collectors.toList());

        // 打印扁平化后的列表
        System.out.println("Size of flattened list: " + flattenedList.size());
    }
}

在这个示例中,我们创建了两个List<Model>,然后将它们组合成一个List<List<Model>>。接着,我们使用stream()方法创建一个流,然后调用flatMap方法将嵌套列表扁平化。最后,使用collect方法将流转换回一个List<Model>对象。


这种方法不需要显式遍历嵌套列表,而是利用Stream API提供的函数式编程特性来实现列表的扁平化。


C#代码如下:

在C#中,您可以使用LINQ(Language Integrated Query)轻松地将List<List<Model>>转换为List<Model>。下面是一个示例:

using System;
using System.Collections.Generic;
using System.Linq;

class Model {
    // Model类的实现
}

class FlattenNestedList {
    static void Main(string[] args) {
        List<Model> innerList1 = new List<Model> { new Model(), new Model() };
        List<Model> innerList2 = new List<Model> { new Model(), new Model(), new Model() };
        List<List<Model>> nestedList = new List<List<Model>> { innerList1, innerList2 };

        List<Model> flattenedList = nestedList.SelectMany(x => x).ToList();

        // 打印扁平化后的列表
        Console.WriteLine("Size of flattened list: " + flattenedList.Count);
    }
}

在这个示例中,我们创建了两个List<Model>,然后将它们组合成一个List<List<Model>>。接着,我们使用SelectMany方法将嵌套列表扁平化。最后,使用ToList方法将结果转换回一个List<Model>对象。


这种方法不需要显式遍历嵌套列表,而是利用LINQ提供的功能来实现列表的扁平化。

-EOF-

AI助手支持GPT4.0