String ArrayList ohne Wiederholungen

noborders

Mitglied
Hey ich hätte da nochmal eine Frage. Ich will eine ArrayList zufällig ausgeben lassen und die ausgegebene Zeile soll aus dem Array gelöscht werden, dass es keine Wiederholungen gibt. Das hat auch geklappt nur in der ausgabe bleiben dann die Zeilen leer anstatt ne neue Zahl zu generieren die es noch nicht gibt. Das hab ich bis jetzt:

Java:
//....
       if(songAnzahl == b){
                        try {
           final JFrame fertigeSetlist2 = new JFrame();
           fertigeSetlist2.setLayout(null);
           fertigeSetlist2.setSize(700,700);
          // fertigeSetlist2.setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
           
           
           fertigeSetlist2.setTitle("songAnzahl()- Slider");
           fertigeSetlist2.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
           fertigeSetlist2.setVisible(true);
           fertigeSetlist.setVisible(false);
           
           
           
         
           
           
           JButton backButton = new JButton ("Zurück");
           backButton.setBounds(50, 580, 150, 50);
           fertigeSetlist2.add(backButton);
           backButton.addActionListener(new ActionListener(){

               @Override
               public void actionPerformed(ActionEvent arg0) {
                   
                   songAnzahl();
                   
                   fertigeSetlist2.setVisible(false);
                   
               }
           });
           
           ArrayList<String> songs = new ArrayList<String>();
           
           
           
           String line;
           
           BufferedReader inReader = new BufferedReader(new FileReader("Lieddatei.txt"));
           
           int rand;
           
           Random r = new Random();
           
            System.out.println("Wiederholungen müssen noch verhindert werden");

          
          while((line = inReader.readLine())!= null){
              songs.add(line);
          }
         
           
      
           
           
          String[] sSong = (String[])songs.toArray(new String[0]);
          
                if (sSong.length == 0){
                   
               
          JOptionPane.showMessageDialog(null, " Du musst zuerst Lieder hinzufügen! ","Error", JOptionPane.ERROR_MESSAGE);
         
                }
                
                
       
          for(int i=0; i<b;i++){
            rand= r.nextInt(sSong.length);
            
            
        //boolean listeVoll = false;
        
              for(Iterator<String> iterator = songs.iterator();iterator.hasNext();){
               String a = iterator.next();
               if(a.equals(sSong[rand])){
               iterator.remove();
                   
               
               
               
               JLabel label = new JLabel(sSong[rand]); 
              //JLabel label = new JLabel(sSong[rand]);
              
              
              
              label.setBounds(250, i*20, 400, 100);
              label.setLayout(null);
              fertigeSetlist2.add(label);
               }
                        };
Danke schonmal für die Hilfe :)
 

noborders

Mitglied
Ups ... also ich will ja dass die Strings nicht doppelt ausgeben werden. Klappt auch aber da wo eigentlich dann eins auftaucht was schon vorhanden ist, ist der Platz dann leer. Deshalb versuch ich, dass dann ne neue Zufallszahl erzeugt wird, um dann den Platz zu füllen bzw halt den doppelten String dadurch zu ersetzen. Die Frage ist halt wie ich das am besten hinkrieg weil wenn ich nochmal ne random Zahl erzeugen lass, überlappen sich die Strings im Label.
Aber danke für die schnelle Antwort und ich hoff dass es verständlich war was ich mein :)
 

lordofdonuts

Aktives Mitglied
Hallo noborders,

soweit ich das jetzt nachvollziehen kann, liest du eine Setlist zeilenweise aus einer Datei ein und speicherst das Ergebnis in einer ArrayList. Dabei kann es vorkommen, dass manche Titel doppelt auftreten. Sehe ich das richtig so?

In diesem Fall empfehle ich eher ein Set anstatt einer List, da es dort keine Duplikate gibt, falls sich Einträge gleichen sollten.

Damit bist du einmal das Problem mit den doppelten Einträgen los. :toll:

Bezüglich der Zufallsauswahl gibt es die Methode

Java:
Collections.shuffle(List<?> list);

Nachdem du für den Aufruf aber wieder eine List brauchst, machst du im Prinzip folgendes:

Java:
Set<String> songs = new HashSet<String>();

// ... befuellen ...

List<String> randomSongs = new ArrayList<String>(songs);

// everyday I'm shuffeling
Collections.shuffle(randomSongs);

for(String song : randomSongs)
{
       // ...
}

Sollte das liefern was du brauchst, bin für Rückfragen offen.
 

noborders

Mitglied
Hey danke für die Antworten :). Hat funktioniert. Jetzt hät ich noch eine Frage dazu. Ich hab die Int variable songAnzahl, die den Wert von nem Slider wieder gibt. Wie krieg ich das jetzt hin dass das "Set" nur die Menge ausgibt wie "SongAnzahl" groß ist? (war das verständlich? :D ) und danke nochmal hat voll weitergeholfen
 

lordofdonuts

Aktives Mitglied
Da gibts mehrere Möglichkeiten.

1.

Java:
int songAnzahl = 42;

for(int i = 0; i < songAnzahl; i++)
{
    String song = randomSongs.get(i);

    // ...
}

2.

Java:
int songAnzahl = 42;
int i = 0;

for(String song : randomSongs)
{
    if(i > songAnzahl)
        break;
    
    // ...

    i++;
}

Bedenke, dass Möglichkeit 1 zu einer ArrayIndexOutOfBoundsException führt, wenn songAnzahl > randomSongs.size() ist. Bin mir sicher du schaffst es das abzufangen ;)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
L ArrayList<String> --> double[] array Java Basics - Anfänger-Themen 18
J ArrayList Name mit String erstellen Java Basics - Anfänger-Themen 8
BadBat ArrayList<String> sort by last word Java Basics - Anfänger-Themen 8
M ArrayList- größten String printen Java Basics - Anfänger-Themen 30
P Input/Output Arraylist nach String eines Objekts durchsuchen Java Basics - Anfänger-Themen 26
S String splitten und in ArrayList speichern Java Basics - Anfänger-Themen 4
T String ArrayList Java Basics - Anfänger-Themen 7
B ArrayList<ArrayList<ArrayList<String>>> Java Basics - Anfänger-Themen 10
V Arraylist: Zählen welcher String am Häufigsten vorkommt Java Basics - Anfänger-Themen 5
S ArrayList<Byte> in String umwandeln Java Basics - Anfänger-Themen 5
L ArrayList als String ausgeben Java Basics - Anfänger-Themen 4
M ArrayList<String> alphabetisch sortieren Java Basics - Anfänger-Themen 5
R ArrayList<String> Komma oder Punkt "replacen" Java Basics - Anfänger-Themen 5
F ArrayList<ArrayList<String>> to String[][] umwandeln? Java Basics - Anfänger-Themen 9
Binary.Coder List bzw. ArrayList als String ausgeben Java Basics - Anfänger-Themen 2
M Datentypen java.util.Arrays$ArrayList cannot be cast to [Ljava.lang.String; Java Basics - Anfänger-Themen 11
M string arraylist untersuchen frage Java Basics - Anfänger-Themen 6
T String aus einer ArrayList suchen Java Basics - Anfänger-Themen 7
StrikeTom Prüfen ob ArrayList string enhält! Wie??? Java Basics - Anfänger-Themen 5
2 Datentypen Kurze Schreibform bei ArrayList (Vs String Array) Java Basics - Anfänger-Themen 6
vandread Kann in einer String-ArrayList keine Zeichen anhängen Java Basics - Anfänger-Themen 5
A Datentypen Typ der Arraylist in String umwandeln Java Basics - Anfänger-Themen 23
X ArrayList to String[][] für JTable Java Basics - Anfänger-Themen 9
M Längster String in Arraylist Java Basics - Anfänger-Themen 2
D ArrayList<String> to Combobox Java Basics - Anfänger-Themen 7
M ArrayList, String Array und IndexOutOfBoundsException Java Basics - Anfänger-Themen 2
N Map<String, HashSet<String>> Umwandeln in Map<String, ArrayList<String>> Java Basics - Anfänger-Themen 14
Z Kann man String[] in einer ArrayList verwenden? Java Basics - Anfänger-Themen 3
C Arraylist mit string array oder hashmap oder objekt? Java Basics - Anfänger-Themen 5
G Arraylist<String> füllen Java Basics - Anfänger-Themen 3
H ArrayList<String> und ArrayList<String[]> Java Basics - Anfänger-Themen 12
G ArrayList<String> durchsuchen Java Basics - Anfänger-Themen 8
C Long -> String -> ArrayList adden -> Exception Java Basics - Anfänger-Themen 4
G String auslesen bzw. arraylist speichern und laden Java Basics - Anfänger-Themen 14
N Ausgabe des Inhalts eines String Arrays in einer ArrayList Java Basics - Anfänger-Themen 4
F ArrayList zu String[] machen Java Basics - Anfänger-Themen 2
U casting: ArrayList to String[] Java Basics - Anfänger-Themen 10
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
I Zerlegen von String Java Basics - Anfänger-Themen 3
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben