<表<串[]>&GT;问题</列表<串[]>

时间:2013-09-20 17:23:14

标签: java arraylist

这是我的情况: 我有一个方法,根据关键字对文件进行排序,并将结果保存到近21个List<String[]>变量中。

 List<String[]> sortKeyword(List<String[]> csvList, String[] keywords)

所以调用这个函数,我得到21 List<String[]>个变量,但我不知道如何返回这些列表。 收到返回结果后,我还需要进行循环更新数据库。

因此我有两个问题: 1.如何退回清单。 2.如何对返回列表进行排序。

有人可以给我一些建议。我真的很感激。

谢谢

5 个答案:

答案 0 :(得分:3)

您不能在Java中返回多个对象,但返回的对象可以是对象的集合。

出于您的目的,您可以将所有这些列表添加到新的List并返回新的List

答案 1 :(得分:0)

您可以返回列表列表。

List<List<String[]>> ll = new ArrayList<>();
ll.add(list1);
ll.add(list2);
return ll;

答案 2 :(得分:0)

要返回三个列表,要么创建一个包装类以将所有三个列表添加到其中,要么只创建一个列表列表。

代码中的另一个问题:

使用equals进行字符串比较:

if(kWord =="kWord1")

应该替换为

if(kWord.equals("kWord1"))

答案 3 :(得分:0)

将返回类型从List<String[]>更改为Map<String, ArrayList<String[]>>。 map String键将存储关键字,ArrayList值将存储结果行。

答案 4 :(得分:0)

如果我理解你的问题,你在函数中执行上述操作,并希望让函数返回所有三个列表,list1,list2和list3。

在这种情况下,您可以返回三个列表的数组,或三个列表中的ArrayList。通常,如果我想要一个返回多个值的函数(可能不是所有类型都相同),我通常只创建一个小类来包含它们:

private static class KeywordSearchResults {
     List<String[]> list1;
     List<String[]> list2;
     List<String[]> list3;
     KeywordResults (List<String[]> list1, List<String[]> list2,
                     List<String[]> list3) {
         this.list1 = list1; this.list2 = list2; this.list3 = list3;
     }
}

(我通常将其作为嵌套类;是否将其设为privatepublic取决于您的需求。)

通常使用非私有字段声明一个类是个坏主意,但我认为如果你只是将它用作包装器只是为了从函数返回多个值或创建一个唯一目的是通过它的对象某些字段在一起,并且在类中没有任何其他方法,我认为这很好,因为该类并不真正代表一些“更高概念”。尽管如此,这只是在你真正合适时才会采用的解决方案;我认为最好环顾四周,看看是否有更好的设计。