2016-05-24 16 views
0

Bitte ich brauche Hilfe dabei, wenn ich eine Arraylist mit Elementen [10, +, 20, -, 129] habe. Ich möchte wissen, wie ich hinter den Elementen im letzten Index in der Arraylist löschen kann, zum Beispiel 9 zu entfernen, so dass das Array [10, +, 20, -, 12] wird. DankeJava-Arraylist verwenden

+0

tun Sie dritte Ziffer in jedem Element entfernen? –

+0

Ist es eine 'ArrayList' von' String'? – aioobe

+0

Ja, es ist eine Arraylist der Zeichenfolge –

Antwort

1

Als Liste der String-Elemente nehmen Sie zuerst das letzte Element und überprüfen Sie, ob die Länge des letzten Elements. Wenn Länge 1 ist, dann entferne es, sonst trimme ein Zeichen von der letzten.

// Adding element in list 
list.add("1") 
list.add("-"); 
list.add("23"); 
list.add("+"); 
list.add("123"); 
list.add("-"); 
// Size of List 
int size = list.size(); 
// Getting Last element 
String lastValue = list.get(size-1); 
// check the length of last element 
if(lastValue.length()<=1) 
    list.remove(size - 1); 
else 
    list.set(size-1,lastValue.substring(0,lastValue.length()-1)); 

Hoffen, dass es

Input : [1, -, 23, +, 123, -] 
Output : [1, -, 23, +, 123] 
+0

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern.Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. - [Von review] (https://stackoverflow.com/review/low-quality-posts/12453582) – Ferrybig

+0

@Ferrybig: Ich freue mich zu tun, danke –

0

Versuchen Sie, das Element in der Liste zu erhalten, konvertieren Sie dieses Element in eine Zeichenfolge, wenn es keine Array-Liste der Zeichenfolgen ist, entfernen Sie die Zahl, was durch Split oder Teilstring-Methode, dann zurück in Ganzzahl und fügen Sie die ArrayList hinzu. Beispiel Ihre Array-Liste in die neue Liste erzeugen senden

public ArrayList<String> globalStrings; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    globalStrings = new ArrayList<>(); 
    globalStrings.add("10"); 
    globalStrings.add("+"); 
    globalStrings.add("-"); 
    globalStrings.add("129"); 

    //Before 
    checklist(globalStrings); 
    globalStrings = getNewStrings(globalStrings); 
    //After 
    checklist(globalStrings); 


} 

getNewStrings gibt eine neue Arraylist Zeichenfolge mit dem letzten Indexeintrag gelöscht von einem

private ArrayList<String> getNewStrings(ArrayList<String> generateNew) { 

    String getString = generateNew.get(generateNew.size() - 1); 

    getString = getString.substring(0,(getString.length() - 1)); 

    generateNew.remove(generateNew.size() - 1); 
    generateNew.add(getString); 

    return generateNew; 
} 

Um die Liste zu überprüfen, können Sie die Methode verwenden unter

private void checklist(ArrayList<String > check) { 
    for(int count =0; count <check.size(); count ++) { 
     Log.e("TAG", "List " + check.get(count)); 
    } 
} 
+0

Wenn die Operation wiederholt wird, sollte sie fortfahren, die letzte Ziffer des letzten Elements in der Arraylist zu entfernen, bis die Arraylist leer wird. –

+0

Ich habe gerade meinen Post mit Codebeispielen bearbeitet, versuche deine Items durch einen Int zu löschen. – Franklyn

0

hoffe, dass ich dies kann Suiten Ihre Bedürfnisse:

Haftungsausschluss: Da ich die Vielfalt der Elemente in Ihrem Beispiel sah, nahm ich an, dass die Liste eine Liste von Strings ist.

0
List elements = Arrays.asList("10","+","20","-","144429"); 
String str = (String) elements.get(elements.size()-1); //get value of last element 
str = str.substring(0, str.length()-1); //get all characters besides last one 
elements.set(elements.size()-1, str); //replace last element in list 
+0

Code funktioniert gut für normale Zahlen, aber nicht für Operatoren wie (+, -, \) –

+0

Für einzelne Zeichenelemente erhalten Sie leer String-Element der Liste. Sie können eine 'if'-Anweisung hinzufügen, um ein Element aus der Liste zu entfernen, wenn es aus einem Zeichen besteht. –

0

Dies ist ein einfaches Programm, um das Problem zu lösen Ihr Problem zu lösen. Sie können die Nullprüfungsbedingungen hinzufügen, um sie zu verbessern.

 List<String> a= new ArrayList<>(); 
    a.add("123"); 
    a.add("856"); 
    a.add("85"); 
    a.add("785"); 

    String trim = a.get(a.size()-1); 
    trim = trim.substring(0,trim.length()-1); 
    if(trim.equals("")){ 
     a.remove(a.size()-1); 
    } 
    else{ 
     a.set(a.size()-1,trim); 
    } 
    System.out.println(a); 

Ausgang: [123, 856, 85, 78]

+0

Code funktioniert gut für normale Zahlen, aber nicht für Betreiber wie (+, -, \) –

+0

es wird, sollten Sie eine Arraylist des Typs Zeichenfolge haben. – sallu

+0

bearbeitet die Antwort zu entfernen, wenn es leer ist Eintrag nach dem Entfernen einzelner Zeichen wie +, - – sallu

0

Like this Versuchen kann es für Sie sein Werk

ArrayList<String> arrayList = new ArrayList<>(); 
//add your data to this list 
//suppose 
// arrayList.add("10"); 
// arrayList.add("+"); 
// arrayList.add("20"); 
// arrayList.add("-"); 
// arrayList.add("129"); 
btnClick = (Button)findViewById(R.id.btnClick); 

btnClick.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if(arrayList.size() > 0) { 
       String lastOne = arrayList.get(arrayList.size() - 1); 
       String newOne = removeLastChar(lastOne); 
       arrayList.remove(arrayList.size() - 1); 
       if (!newOne.equalsIgnoreCase("")) { 
        arrayList.add(arrayList.size(), newOne); 
       } 
       for (String item : arrayList) { 
        Log.d("TAG", item); 

       } 

      } 
     } 
    }); 
} 
public String removeLastChar(String s) { 
    if (s == null || s.length() == 0) { 
     return s; 
    } 
    return s.substring(0, s.length()-1); 
} 
Verwandte Themen