Maison  >  Questions et réponses  >  le corps du texte

java - List<List<model>>如何更快捷的取里面的model?

访问接口返回数据类型为List<List<model>>,现在想将其中的model插入数据库,感觉一点点循环有点傻,0.0...,各位有没有其他的方法?
PHP中文网PHP中文网2742 Il y a quelques jours597

répondre à tous(5)je répondrai

  • PHP中文网

    PHP中文网2017-04-18 10:55:31

    C# :

    var flat = list.SelectMany(l=>l).ToList();

    Pour Java :

    List<model> flat = list.stream().flatMap(List::stream).collect(Collectors.toList());

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 10:55:31

    list.stream().flatMap(model-> model.stream()).forEach(System.out::println);

    répondre
    0
  • 高洛峰

    高洛峰2017-04-18 10:55:31

    La structure des données dicte, faisons une boucle

    répondre
    0
  • 天蓬老师

    天蓬老师2017-04-18 10:55:31

            public static IEnumerable<T> GetItems<T>(this List<List<T>> list)
            {
                foreach (var child in list)
                {
                    foreach (var item in child)
                    {
                        yield return item;
                    }
                }
            }
    
            public static IEnumerable<T> GetNestItems<T>(this System.Collections.IList list)
            {
                Type type = null;
    
                foreach (var item in list)
                {
                    if (type == null) type = item.GetType();
    
                    if (type == typeof(T))
                    {
                        yield return (T)item;
                    }
                    else if (type.GetGenericTypeDefinition() == typeof(List<>))
                    {
                        var items = GetNestItems<T>((System.Collections.IList)item);
    
                        foreach (var t in items)
                        {
                            yield return t;
                        }
                    }
                }
            }

    répondre
    0
  • 阿神

    阿神2017-04-18 10:55:31

    Ne faites pas de vélo vous-même. Ou capturez d'autres fonctions pour vous aider à boucler la boucle.

    répondre
    0
  • Annulerrépondre