Einzelnen Beitrag anzeigen
Alt 08.09.2007, 06:38   #17 (permalink)
ray3002
Nicht angemeldet
 
Fachbeiträge: n/a
Standard andere Lösung?

Hmmm... bin gerade auf den Thread gestossen, weil ich ein ganz ähnliches Problem habe. Ich will in irgendeiner Collection die Duplikate rausfiltern, ABER ich brauche die Häufigkeit der doppelt vorkommenden Elemente. Ich habe mal mit Collections.sort() die ganze Sache sortiert und gehe sie dann nach aufeinenander folgenden gleichen Elementen durch. Habe es mit einer LinkedList und mit einem Stack probiert, aber irgendwie wollen die ca. 220.000 Strings da nicht schnell durch. Gibt es da nicht irgendwie was bessers?
Hier mal meine Ansätze:


Mit Stack:
Code:
	public Stack<String> duplikateAussortieren(Stack<String> stack) {
		Collections.sort(stack);
		String string1;
		String string2;
		int size = stack.size();
		Stack<String> neuerStack = new Stack<String>();
		monitor.setMaximum(size);
		monitor.init();
		

		while (stack.size() > 2) {
			string1 = stack.pop();
			neuerStack.add(string1);
			string2 = stack.pop();
			monitor.setValue(size - stack.size() + (size / 100));

			if (string1.equals(string2)) {
				while (string1.equals(string2)) {
					monitor.setValue(size - stack.size() + (size / 100));
					if(stack.size() > 1)
					string2 = stack.pop();
					

				}

			} else {
				neuerStack.add(string2);
			}
		}
		monitor.clear();
		return neuerStack;

	}
Monitor kann man ignorieren, ist ein Statusbalken.

Und hier noch meine LinkedList Lösung:

Code:
	public LinkedList<String> findDuplicates(LinkedList<String> list) {
	
		for (Iterator<String> i = list.iterator(); i.hasNext();) {
		
			String s = i.next();
			if (s.equals(i.next())) {
				i.remove();
			}
		}
	
		return list;
	}
Ich programmiere noch nicht so lange, wie man sicher sehen kann . Wäre aber trotzdem sehr nett, wenn mir jemand auf die Sprünge helfen könnte.

Grüße aus Kölle

Ray

[/code][/quote]
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen