Java 如何将列表的元素添加到另一个列表?
我有两个sql查询,它们返回列表。我的代码:Java 如何将列表的元素添加到另一个列表?,java,sql,list,collections,Java,Sql,List,Collections,我有两个sql查询,它们返回列表。我的代码: List<String> list = em.createNativeQuery(query1).getResultList(); list.addAll(em.createNativeQuery(query2).getResultList()); 我拥有的:包含两个子列表的列表-来自query1的子列表和来自query2的子列表。 我需要的是:一个包含来自query1和query2的所有元素的列表。 有什么想法吗 问题出现在第一个sq
List<String> list = em.createNativeQuery(query1).getResultList();
list.addAll(em.createNativeQuery(query2).getResultList());
我拥有的:包含两个子列表的列表-来自query1的子列表和来自query2的子列表。
我需要的是:一个包含来自query1和query2的所有元素的列表。
有什么想法吗
问题出现在第一个sql查询中。结果是添加到对象数组中,因此addAll方法无法解决我的问题。您实际上想要创建列表列表,即: 列表列表= 不能在以这种方式定义的同一列表中同时存储字符串和字符串列表。如果您确实想这样做,您应该只定义List,并且您将能够存储任何类型的元素。但是,强烈建议不要这样做。java中引入了泛型,以防止在编译时使用泛型 所以,您可能真正想要的是创建字符串列表,然后执行返回字符串列表的查询,并将结果添加到第一个列表中:
List<List<String>> list = new LinkedList<List<String>>();
list.addAll(em.createNativeQuery(query1).getResultList());
list.addAll(em.createNativeQuery(query1).getResultList());
顺便说一句,这种方法也不推荐。通常,如果您想要创建n>1的n维集合,您可能应该创建另一个容器类来保存集合和其他内容,然后创建存储此类实例的一维集合 addAll将起作用。从两个查询中获取数据的代码都是正确的我创建了一个类似的情况来测试您所说的内容。显然我没有访问您的特定数据库进行查询,所以我只关注您的问题点;列表组合
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);
我唯一想知道为什么你没有得到这个结果的原因是你的一个查询没有返回任何东西。。。我建议在将每个列表添加到一起之前,像上面所做的那样,先将它们打印出来,看看其中是否有一个是空的。编写一个查询,返回SQL query1 UNION query2.list.addAllem.createNativeQueryquery2.getResultList;将为您提供查询1和查询2中的列表。不是吗?问题1:选择手机、密码、名字、,last\u name from Accounts where mobile\u phone='+phone+'查询2:选择name from mail where user\u id=select id from Accounts where mobile\u phone='+phone+\'您的代码似乎符合您的要求…..如果您担心重复,请使用Set..尝试此查询:选择手机、密码、名字、姓氏,来自帐户的名称加入帐户上的邮件。id=mail.user_id其中mobile_phone='+phone+';否。我想创建一个没有子列表的列表。我想将两个查询中的列表合并为一个。如果代码有效,那么我创建新主题的目的是什么?我想分享一个对我有效的示例List dataList=new ArrayList;dataList.addAllgetDataListqry1;dataList.addAllgetDataListqry2;尝试使用调试器运行并查看列表中的值。调试中列表中的值与打印的值相同…在您的计算机上运行我的代码是否会得到不同的结果?
foods(query1): [Beef, Chicken]
fruits(query2): [Apple, Peach, Pear]
foods(after combination of queries): [Beef, Chicken, Apple, Peach, Pear]