如何在java中获取List中的特定元素?

时间:2011-10-25 19:24:26

标签: java list

我有一个CSV文件。它有很多行。在每一行中都有多个以逗号分隔的值。

我正在使用OPENCSV从文件中提取数据。我希望能够直接转到列表数据结构中的任何特定行。

CSVReader reader = new CSVReader(new FileReader(
                    "myfile.csv"));
            try {
                List<String[]> myEntries = reader.readAll();
                for (String[] s : myEntries) {
                    System.out.println("Next item: " + s);
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

打印

Next item: [Ljava.lang.String;@6c8b058b
Next item: [Ljava.lang.String;@1b192059
Next item: [Ljava.lang.String;@e9ac0f5
Next item: [Ljava.lang.String;@51f21c50
Next item: [Ljava.lang.String;@6e20f237
Next item: [Ljava.lang.String;@34fe315d
Next item: [Ljava.lang.String;@1c5aebd9
Next item: [Ljava.lang.String;@1532021a
Next item: [Ljava.lang.String;@62803d5
Next item: [Ljava.lang.String;@2d13981b
Next item: [Ljava.lang.String;@61672bbb

我想知道无论如何我都可以通过List访问各个行,元素。

    1,2,3,4,5
    6,7,8,9,10
    11,12,13,14
    15,16,17,18

我想要String [] nextLine = 1,2,3,4,5(其中nextLine [0] = 1 nextLine [1] = 2等)并且在下一次迭代中,nextLine应该是6,7,8,9 ,等等

7 个答案:

答案 0 :(得分:41)

List接口支持通过get方法进行随机访问 - 获取第0行,使用list.get(0)。您需要对其使用数组访问,即lines.get(0)[0]是第一行的第一个元素。

请参阅javadoc here

答案 1 :(得分:4)

Java中的toString数组类型方法并不特别有意义,除了告诉你这是一个数组。

您可以使用java.util.Arrays.toString

或者,如果您的行只包含数字,并且您希望行1,2,3,4...而不是[1, 2, 3, ...],则可以使用:

java.util.Arrays.toString(someArray).replaceAll("\\]| |\\[","")

答案 2 :(得分:2)

此时:

for (String[] s : myEntries) {
   System.out.println("Next item: " + s);
}

您需要在一行中加入字符串数组。查看这篇文章: A method to reverse effect of java String.split()?

答案 3 :(得分:0)

你有大约98%的权利。唯一的问题是你正在尝试打印出一个不按照你喜欢的方式打印的String []。相反,试试这个...

for (String[] s : myEntries) {
    System.out.print("Next item: " + s[0]);
    for(int i = 1; i < s.length; i++) {
        System.out.print(", " + s[i]);
    }
    System.out.println("");
}

这样你就可以访问数组中的每个字符串而不是数组本身。

希望这有帮助!

答案 4 :(得分:0)

String []是一个字符串数组。这样的数组在内部是一个类。与所有未显式扩展其他类的类一样,它会隐式扩展Object。默认情况下,类Object的方法toString()为您提供了表示形式:类名,后跟@,后跟十六进制的哈希码。由于String []类不会覆盖toString()方法,因此您可以得到它。

创建一些为您输出数组元素的方法。迭代数组并在元素上使用System.out.print()(不打印* ln *)。

答案 5 :(得分:0)

CSVReader reader = new CSVReader(new FileReader(
                "myfile.csv"));
        try {
            List<String[]> myEntries = reader.readAll();
            for (String[] s : myEntries) {
               for(String ss : s) {
                   System.out.print(", " + ss);
               }

            }
        } catch (IOException e) {
            e.printStackTrace();
        }

答案 6 :(得分:0)

查看String Here的split函数,并使用类似String[] results = input.split("\\s+");的函数。正则表达式位在空格上,它应该是技巧