2016-03-30 18 views
-2

Ich habe folgende String-Daten, die Arraylist von Objekten Daten enthalten, wie kann ich konvertieren es Typ ArraylistConvert String arraylistof Objekt

String data="[Score{id=1, value='3.5'}, 
    Score{id=2, value='4.5'}, 
    Score{id=3, value='2.0'}]"; 
+0

Sicherlich wird eines der Tausenden von Beispielen für das Teilen von Strings Ihnen die Antwort geben. – redFIVE

+0

'konvertieren es in arraylist type 'bedeutet? Tut mir wirklich leid, aber ich konnte deine Frage nicht beantworten. Können Sie mir bitte sagen, was die erwartete Leistung sein wird? – Bikku

+0

Ich muss es in Array-Liste der Objekte konvertieren, die es sein sollte Liste lists = –

Antwort

0

Ich würde die eckigen Klammern [] am Anfang weglassen, indem die erste Ausschneiden und letztes Zeichen. Dann müssen Sie den String aufteilen, um alle Objekte in einem Array zu erhalten. Am Ende müssen Sie die String-Objekte in die tatsächlichen Klassen konvertieren. Sie können dies nach dem gleichen Prinzip mit den Methoden substring und indexOf tun.

In Bezug auf Code, würde dies wie folgt aussehen:

// the String containing all the objects 
String data="[Score{id=1, value='3.5'}, Score{id=2, value='4.5'}, Score{id=3, value='2.0'}]"; 

// Cutting out the brackets [] 
data = data.substring(1, data.length - 1); 

// Splitting the String to smaller pieces 
// like "Score{id=1, value='3.5'}", etc 
String[] array = data.split(","); 

// Creating the ArrayList, where we will save the scores 
List<Score> scores = new ArrayList<Score>(); 

for(int i=0;i<array.length;i++) { 

    // Creating the Score instance 
    Score score = new Score(); 

    // Omitting the brackets {} 
    int start = array[i].indefOx("{") + 1; 
    int end = array[i].indefOx("}"); 

    // Cutting out the String inside brackets {} 
    String temp = array[i].substring(start, end); 

    // We use the same principles again to get those values inside the brackets {}. 
    String[] tempArray = temp.split(","); 
    for(int j=0;j<tempArray.length;j++) { 
    int start = array[i].indefOx("=") + 1; 
    temp2 = tempArray[j].substring(start); 
    if(j == 0) { 
     score.setId(Integer.valueOf(temp2)); 
    } else { 
     // To cut out the '' 
     score.setValue(temp2.substring(1, temp2.length)); 
    } 
    } 

    // adding score instance to the list 
    scores.add(score); 

} 

möchte ich darauf hinweisen, dass Sie nur ich die richtigen Indizes verwendet, um überprüfen würde, wenn ich substring und indexOf verwendet. Wenn dieser String ohne den "Score" Teilstring wäre, könnten Sie dies einfacher umwandeln, denn dann würde der String einen JSONArray darstellen.