Java Liste mit Strings alphabetisch auf- bzw. absteigend sortieren

Posted: März 21st, 2013 | Filed under: Java, Programmieren, Tutorials | Tags: , , , , , , , , , | 8 Comments »

In Zukunft will ich mal wieder öfters was zum Thema Java schreiben. Ich werde versuchen ein Sammelsurium an Java Grundlagen zu erarbeiten so dass nach und nach eine Art Nachschlagewerk entsteht.

Anfangen will ich mit dem Sortieren von Listen welche Strings enthalten. Über die Klasse Collections besteht die Möglichkeit Listen automatisiert zu sortieren bzw. neu anzuordnen. Das folgende Beispiel beschreibt wie einfach dies zu realisieren ist.

Beispiel – ArrayList alphabetisch sortieren


import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class SortableExample {
  public static void main(String[] args) {
    
    /* Liste anlegen, die Strings enthält */
    List<String> namen = new ArrayList<String>();
    
    /* Namen hinzufügen */
    namen.add("Peter");
    namen.add("Frank");
    namen.add("Hans");
    
    /* Liste alphabetisch aufsteigend sortieren (a...z) */
    Collections.sort(namen);
    
    /* Ausgabe: Frank Hans Peter */
    for(String name : namen){
      System.out.println(name);
    }
    
    /* Liste alphabetisch absteigend sortieren (z...a) */
    Collections.sort(namen);
    Collections.reverse(namen);
    
    /* Ausgabe: Peter Hans Frank */
    for(String name : namen){
      System.out.println(name);
    }
  }
}

Java List zufällig sortieren / mischen / shufflen

Posted: Oktober 25th, 2011 | Filed under: Java, Programmieren | Tags: , , , , , , , , , , | 1 Comment »

Schon oft in meinem Programmierer-Dasein habe ich eine List oder eine ArrayList in Java zufällig mischen müssen. Das ganze geht ziemlich einfach. Die Klasse Collections bietet uns die Methode shuffle an. Folgendes Code-Beispiel zeigt wie:

import java.util.ArrayList;
import java.util.Collections;

public class ListZufaelligSortieren {
  
  public static void main(String[] args) {
    
    ArrayList<String> namensListe = new ArrayList<String>();
    
    String name1 = new String("Peter");
    String name2 = new String("Paul");
    String name3 = new String("Maria");
    String name4 = new String("Otto");
    
    namensListe.add(name1);
    namensListe.add(name2);
    namensListe.add(name3);
    namensListe.add(name4);
    
    // List durcheinander mischen
    Collections.shuffle(namensListe);
        
    for(String name : namensListe){
      System.out.print(name);
      System.out.print(" ");
    }
    // Ausgabe: Maria Paul Otto Peter
  }
}

Java aus Liste während der Iteration Listenelemente löschen

Posted: Januar 21st, 2011 | Filed under: Programmieren | Tags: , , , , , , , , | 7 Comments »

Oft kommt es vor dass man in Java während der Iteration über eine ArrayList oder eine LinkedList ein Element nach einem gewissen Kriterium heraus löschen will. Über die gewöhnliche Schleife for(String name : namen) geht dies jedoch nur über Umwege mit einer zweiten Hilfsliste. Löscht man Elemente während der Iteration mit obiger Schleife erhält man eine java.util.ConcurrentModificationException.

Folgende Lösung ist weitaus einfacher und effizienter. Hier wird nämlich ein Iterator verwendet und es ist möglich während der Iteration zu löschen:

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class ListRemoveDuringIteration {

  public static void main(String[] args) {
    List<String> namen = new ArrayList<String>();
   
    namen.add("Peter");
    namen.add("Paul");
    namen.add("Maria");
    namen.add("Frank");
   
    for (Iterator<String> nameIter = namen.iterator(); nameIter.hasNext();){
      String name = nameIter.next();
      if(name.equals("Paul")){
        nameIter.remove();
        System.out.println("Paul wurde während der Iteration aus der Liste gelöscht!");
      }
    }
  }
}

 

Quelltextdatei herunterladen: ListRemoveDuringITeration.java


Java doppelte Einträge aus ArrayList löschen

Posted: März 26th, 2010 | Filed under: Programmieren | Tags: , , , , , , , | 3 Comments »

Beim schreiben eines Textfilters habe ich letzt eine kleine Funktion benötigt. Ich wollte gleiche Einträge in einer ArrayList herrauslöschen. Folgende Funktion löscht alle Duplikate.

  public void removeDuplicatedEntries(ArrayList<String> arrayList) {
    HashSet<String> hashSet = new HashSet<String>(arrayList);
    arrayList.clear();
    arrayList.addAll(hashSet);
  }