Comment accéder à un élément particulier d’une liste dans Java?

J’ai un fichier CSV. Il a beaucoup de lignes. Dans chaque ligne, il y a plusieurs valeurs séparées par des virgules.

J’utilise OPENCSV pour extraire des données du fichier. Je veux pouvoir accéder directement à une ligne particulière de la structure de données List.

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

Cette imprime

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

Je veux savoir si, de toute façon, je pourrais accéder à des lignes individuelles, à des éléments via List.

c’est à dire

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

Je veux Ssortingng [] nextLine = 1,2,3,4,5 (où nextLine [0] = 1 nextLine [1] = 2 etc) et dans la prochaine itération nextLine devrait être 6,7,8,9,10 etc.

L’interface List prend en charge l’access aléatoire via la méthode get . Pour obtenir la ligne 0, utilisez list.get(0) . Vous devrez utiliser l’access au tableau pour cela, c’est-à-dire que lines.get(0)[0] est le premier élément de la première ligne.

Voir le javadoc ici .

La méthode toSsortingng des types de tableau dans Java n’est pas particulièrement significative, sauf pour vous dire ce que c’est un tableau.

Vous pouvez utiliser java.util.Arrays.toSsortingng pour cela.

Ou si vos lignes ne contiennent que des nombres et que vous voulez une ligne comme 1,2,3,4... au lieu de [1, 2, 3, ...] , vous pouvez utiliser:

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

À ce point:

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

Vous devez joindre le tableau de chaînes dans une ligne. Check this post: Une méthode pour inverser l’effet de java Ssortingng.split ()?

Vous avez à peu près 98% raison. Le seul problème est que vous essayez d’imprimer une chaîne [] qui n’imprime pas comme vous le souhaitez. Au lieu d’essayer ceci …

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

De cette façon, vous accédez à chaque chaîne du tableau au lieu du tableau lui-même.

J'espère que cela t'aides!

Ssortingng [] est un tableau de chaînes. Un tel tableau est en interne une classe. Comme toutes les classes qui n’étendent pas explicitement une autre classe, Object étend implicitement. La méthode toSsortingng() de la classe Object, par défaut, vous donne la représentation que vous voyez: le nom de la classe, suivi de @, suivi du code de hachage en hexadécimal. Puisque la classe Ssortingng [] ne remplace pas la méthode toSsortingng (), vous obtenez cela en conséquence.

Créez une méthode qui affiche les éléments du tableau pour vous. Itérer sur le tableau et utiliser System.out.print() (ne pas imprimer * ln *) sur les éléments.

 CSVReader reader = new CSVReader(new FileReader( "myfile.csv")); try { List myEnsortinges = reader.readAll(); for (Ssortingng[] s : myEnsortinges) { for(Ssortingng ss : s) { System.out.print(", " + ss); } } } catch (IOException e) { e.printStackTrace(); } 

Vérifiez la fonction split de Ssortingng Here , et utilisez-la quelque chose comme ceci Ssortingng[] results = input.split("\\s+"); . Le bit d’expression régulière jaillit sur les espaces, il devrait faire l’affaire