tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
4
ZUGRIFFE
1526
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Dox Dox ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    21
    Hallo,

    habe ein kleines Problem.

    Wie kann ich doppelte Einträge aus einem Vector filtern bzw. löschen?
    (Vector hat nur Strings)

    Ich hoffe mir kann Jemand hier helfen.
     

  2. #2
    Avatar von Vincentius
    Vincentius Vincentius ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Ort
    Stuttgart
    Beiträge
    295
    Nimm einfach statt Vector ein Set: es verhindert automatisch doppelte Einträge.
     

  3. #3
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Siehe:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    
    /*
     * Created on 13.10.2004
     */
    package de.tutorials;
     
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Set;
    import java.util.Vector;
     
    /**
     * @author Darimont
     *  
     */
    public class Test08 {
     
        public static void main(String[] args) {
            Vector v = new Vector();
            v.add("a");
            v.add("a");
            v.add("b");
            v.add("a");
            v.add("c");
            v.add("d");
            v.add("c");
     
            Set set = new HashSet(v);
            for (Iterator iter = set.iterator(); iter.hasNext();) {
                System.out.println(iter.next());
            }
     
        }
    }
     
    bzw. so:
    /*
     * Created on 13.10.2004
     */
    package de.tutorials;
     
    import java.util.HashSet;
    import java.util.Set;
    import java.util.Vector;
     
    /**
     * @author Darimont
     *  
     */
    public class Test08 {
     
        public static void main(String[] args) {
            Vector v = new Vector();
            v.add("a");
            v.add("a");
            v.add("b");
            v.add("a");
            v.add("c");
            v.add("d");
            v.add("c");
            v.add("a");
            Set set = new HashSet(v);
            v = new Vector(set);
            System.out.println(v);
        }
    }
    ...oder verwende gleich eine Set Implementierung ... as Vincentius just said.
    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  4. #4
    Avatar von Franz Degenhardt
    Franz Degenhardt Franz Degenhardt ist offline Mitglied Brokat
    Registriert seit
    Mar 2004
    Ort
    Köln
    Beiträge
    378
    Hi!

    Benutze keinen Vector, sondern ein Collectiontyp der von Anfang an keine doppelten Einträge zulässt, wie alle Klassen, die das Interface Set implementieren (z.B. HashSet).

    Kommst du nicht um die Verwendung von einem Vector herum, dann kannst du ihn folgendermassen von doppelten Einträgen säubern

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
          Vector vec = new Vector();
          vec.add("bla");
          vec.add("bla");
          HashSet set = new HashSet();
          for (int i = vec.size() - 1; i >= 0; i--) {
             if (!set.add(vec.elementAt(i))) {
                System.out.println("Element " + i + " gabs schon");
             }
          }

    Das set enthält dann keine doppelten Einträge mehr.
    Die for-Schleife ist eigentlich eine ganz normale for-Schleife, die bloss eine kleine Optimierung enthält. Sozusagen als kleiner Denkanstoss

    Grüsse TrueSun

    edit:
    Weia, wie langsam poste ich denn?!
    Und der Konstruktoraufruf new HashSet(new Vector()); ist wahrscheinlich das einfachste und beste.
     
    Denken gefärdet die Gewohnheit

  5. #5
    Dox Dox ist offline Mitglied
    Registriert seit
    Oct 2004
    Beiträge
    21
    Ihr seit echt Spitze!

    Weißgar nicht wie ich mich bei Euch bedanken kann.

    Respekt
     

Ähnliche Themen

  1. Prüfen von doppelten Einträgen mit SQL Selectbefehl
    Von Naui im Forum Visual Basic 6.0
    Antworten: 1
    Letzter Beitrag: 11.02.10, 15:26
  2. Sortierte Liste mit doppelten Einträgen
    Von dertobian im Forum VisualStudio & MFC
    Antworten: 2
    Letzter Beitrag: 23.10.07, 12:05
  3. Antworten: 5
    Letzter Beitrag: 03.11.06, 18:03
  4. Suche nach doppelten Einträgen (Mysql)
    Von Deletemaster im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 04.02.05, 21:18
  5. Löschen von doppelten Einträgen
    Von meinrock im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 05.03.04, 10:33