繁体   English   中英

如何将列表元素添加到另一个列表?

[英]How to add elements of list to another list?

我有两个sql查询,返回列表。 我的代码:

List<String> list = em.createNativeQuery(query1).getResultList();
list.addAll(em.createNativeQuery(query2).getResultList());

我拥有:列出两个子列表 - 来自query1的子列表和来自query2的子列表。
我需要的:一个包含来自query1和query2的所有元素的列表。
任何的想法?


问题出现在第一个SQL查询中。 结果是在对象数组中添加,因此addAll方法无法解决我的问题。

addAll()将起作用。 从两个查询中获取数据的代码是正确的

我创建了一个类似的情况来测试你在说什么。 显然我无法访问您的特定数据库进行查询,因此我只关注您的问题; List组合。

List<String> foods = new ArrayList<String>(); //this is analogous with the list returned from your first query
foods.add("Beef");
foods.add("Chicken");
System.out.println("foods(query1):  "+foods);

List<String> fruits = new ArrayList<String>(); //this is analogous with the list returned from your second query
fruits.add("Apple");
fruits.add("Peach");
fruits.add("Pear");
System.out.println("fruits(query2):  "+fruits);


foods.addAll(fruits); //this combines the two lists (your two queries)
System.out.println("foods(after combination of queries):  "+foods);

输出是:

foods(query1):  [Beef, Chicken]
fruits(query2):  [Apple, Peach, Pear]
foods(after combination of queries):  [Beef, Chicken, Apple, Peach, Pear]

我唯一想到你没有得到这个结果的原因是你的一个查询没有返回任何内容......我建议尝试打印出每个列表,然后将它们添加到一起,就像我上面所做的那样,看看是否为空。

您实际上想要创建列表列表,即:

List<List<String>> listOfLists = ...;

您不能将这些字符串和字符串列表存储在以这种方式定义的同一列表中。 如果你确实想这样做,你应该只定义List<Object> ,你就可以存储任何类型的元素。 但是,强烈建议不要这样做。 已经在java中引入了泛型以防止在编译时使用这种用法。

因此,您可能真正想要的是创建字符串列表列表,然后执行返回字符串列表的查询并将结果添加到第一个列表:

List<List<String>> list = new LinkedList<List<String>>();
list.addAll(em.createNativeQuery(query1).getResultList());
list.addAll(em.createNativeQuery(query1).getResultList());

BTW也不推荐这种方法。 通常,如果要创建n> 1的n维集合,您可能应该创建另一个容纳集合和其他东西的容器类,然后创建存储此类实例的一维集合。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM