Cum se poate ajunge la un anumit element dintr-o listă în java? (Programare, Java, Lista)

utilizator244333 a intrebat.

Am un fișier CSV. Acesta are multe linii. În fiecare linie există mai multe valori separate prin virgule.

Folosesc OPENCSV pentru a extrage datele din fișier. Vreau să am posibilitatea de a merge direct la orice linie particulară care se află în structura de date List.

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();
            }

Aceasta tipărește

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

Vreau să știu dacă există posibilitatea de a accesa linii individuale, elemente prin intermediul Listei.

De exemplu

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

Vreau ca String[] nextLine = 1,2,3,4,5 (unde nextLine[0] = 1 nextLine[1] = 2 etc.), iar în următoarea iterație nextLine să fie 6,7,8,9,10 etc.

Comentarii

  • De ce nu adăugați încă o buclă for? –  > Por Garrett Hall.
7 răspunsuri
Paul Morie

The List interfața suportă accesul aleatoriu prin intermediul get pentru a obține linia 0, utilizați list.get(0). Va trebui să folosiți accesul la matrice pentru aceasta, adică, lines.get(0)[0] este primul element al primei linii.

Consultați javadoc-ul aici.

Vlad

toString a tipurilor de tablouri în Java nu are o semnificație deosebită, în afară de a vă spune despre ce este un tablou.

Puteți folosi java.util.Arrays.toString pentru asta.

Sau dacă liniile dvs. conțin doar numere și doriți o linie ca 1,2,3,4... în loc de [1, 2, 3, ...], puteți folosi:

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

Miguel Prz

În acest moment:

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

Trebuie să uniți array-ul de Strings într-o linie. Verificați acest post: O metodă pentru a inversa efectul lui java String.split()?

Umbrit

Ai dreptate în proporție de 98%. Singura problemă este că încerci să tipărești un String[] care nu se tipărește așa cum ți-ai dori. În schimb, încercați acest lucru…

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("");
}

În acest fel accesezi fiecare șir din tablou în loc de tabloul în sine.

Sper să vă fie de ajutor!

G_H

String[] este un array de string-uri. Un astfel de array este în mod intern o clasă. Ca toate clasele care nu extind în mod explicit o altă clasă, extinde implicit Object. Metoda toString() a clasei Object, în mod implicit, vă oferă reprezentarea pe care o vedeți: numele clasei, urmat de @, urmat de codul hash în hexagonal. Deoarece clasa String[] nu suprascrie metoda toString(), obțineți acest lucru ca rezultat.

Creați o metodă care să producă elementele tabloului pentru dumneavoastră. Iterați peste matrice și utilizați System.out.print() (nu print*)ln*) asupra elementelor.

raj
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();
        }

dann.dev

Consultați funcția de divizare a String Aici, și utilizați-o în felul următor String[] results = input.split("\s+");. Expresia obișnuită se varsă pe spații albe, ar trebui să facă trucul

Tags:,