2016-07-28 6 views
0

Ich habe die folgende Liste:Eine Arraylist von Strings in mehrere Teilstrings aufteilen und in hashmap hinzufügen: JAva | Selen

1: Erwachsene (r) (1 x 9.288)

2: Kind (s) (1 x 9.288)

3: Baby (s) (1 X 2.429)

4: Adult (s) (1 X2,712)

5: Kind (s) (1 X 2.712)

6 : Kleinkind (1 x 146)

Ich brauche Informationen aus der abve Liste zu extrahieren, wie folgt:

List1: Erwachsene (r), Kind (s) .Infant (n)

Liste 2: 1,1,1,1 , 1,1

Liste 3: 9,288,9,288,2,429.2,712,2,712,146

Mit dem folgenden Code, sondern gibt mir Fehler:

 HashMap<String, HashMap<String,String>>getPassengerList(){ 
     HashMap<String, HashMap<String,String>> map = new HashMap<String, HashMap<String,String>>(); 
     HashMap<String,String> map1 = new HashMap<String,String>(); 

     //ArrayList<String> passlist = new ArrayList<>(); 
     int size = paxList.size(); 
     for(int i=0;i<size;i++){ 
      //passlist.add(paxList.get(i).getText()); 
      System.out.println(paxList.get(i).getText()); 
      String pax = (paxList.get(i).getText().trim()).replaceAll("(", ""); 
      String[] passType = pax.split(" "); 
      System.out.println(passType[0]+" ....... "+passType[1]); 
      String[] passCount = passType[1].split("X"); 
      map1.put(passCount[0],passCount[1]); 
      map.put(passType[0],map1); 
     } 


     for(String name : map.keySet()){ 
      String key = name.toString(); 
      String value = map.get(name).toString(); 
      System.out.println(key + " " + value); 
     } 

     return map; 

    } 
+1

Welchen Fehler bekommen Sie? – Eran

+0

hast du von 'split()' Methode der Klasse 'String' in Java gehört? Sie können nach Ihrem eigenen Konzept manipulieren .. Danke –

Antwort

0

Die Split-Methode kann verwendet werden, um die resultierenden Strings zu erhalten, und dann können wir sie zu den separaten Listen hinzufügen. Folgender Code für dieses Problem für mich gearbeitet:

List<String> list1= new ArrayList(); 
    List<String> list2= new ArrayList(); 
    List<String> list3= new ArrayList(); 

    //myList is your original list 
    for(int i=0;i<myList.size();i++){  
     String r=myList.get(i).split("X")[0].split("\\(")[2];//gives you list1 elements 
     String m=myList.get(i).split("\\)")[0]+")";//gives you list2 elements 
     String l=myList.get(i).split("X")[1].trim().split("\\)")[0];//gives you list3 elements 
     list1.add(m); 
     list2.add(r); 
     list3.add(l); 

    } 
0
import java.util.ArrayList; 
import java.util.List; 

/** 
* 
* @author jekink 
* 
*/ 
public class Test { 


    public static void main(String[] args) { 
     List<String> list = new ArrayList<>(); 
     list.add("Adult(s) ‎(1 X 9,288)‎"); 
     list.add("Child(s) ‎(1 X 9,288)‎"); 
     list.add("Infant(s) ‎(1 X 2,429)‎‎"); 
     list.add("Adult(s) ‎(1 X2,712)‎‎"); 
     list.add("Child(s) ‎(1 X 2,712)‎"); 
     list.add("Infant(s) ‎(1 X 146)‎"); 

     List<String> list1= new ArrayList(); 
     List<String> list2= new ArrayList(); 
     List<String> list3= new ArrayList(); 
     String first; 
     String second; 
     String third; 

     for(String value:list){  
      second=value.split("X")[0].split("\\(")[2]; 
      first=value.split("\\)")[0]+")"; 
      third=value.split("X")[1].trim().split("\\)")[0]; 
      if(!list1.contains(first)){ 
       list1.add(first); 
      } 
      list2.add(second); 
      list3.add(third); 

     } 
     System.out.println("List1 :"+list1); 
     System.out.println("List2 :"+list2); 
     System.out.println("List3 :"+list3); 
} 

} 
0

einfach die Zeichenfolge aufgeteilt einmal durch Leerzeichen Trennzeichen und dann alle Klammern ersetzen Sie nicht wollen. Stellen Sie nur sicher, dass Sie nach Fehlern suchen, z. ArrayIndexOutOfBounds.

List<String> list1 = new ArrayList<>(); 
List<String> list2 = new ArrayList<>(); 
List<String> list3 = new ArrayList<>(); 

for (String item : strings) { 
    String[] splitItems = item.split(" "); 
    list1.add(splitItems[1]); 
    list2.add(splitItems[2].replace("(", "")); 
    list3.add(splitItems[4].replace(")", "")); 
} 
+0

Danke. Es funktionierte :) –