Entfernen doppelte strings aus einem array?
Wie kann ich entfernen Sie doppelte strings aus einem string-array ohne Verwendung eines HashSet?
Ich versuche es mal mit Schleifen, aber die Wörter nicht löschen.
StringBuffer outString = new StringBuffer("Our, aim, and, isn't, easy, you, you're, actual, and, are, aren't, and, improve, achieving, and, Obviously, and, illumination, are");
wordList = outString.toString().split(", ");
for (i = 0; i < wordList.length; i++) {
for (j = 0; j < wordList.length; j++) {
if((wordList[i]!=wordList[j])&&(j>i)){
t=true;
}
}
if(t==true){
k++;
}
}
String[] wordList1 = new String[k];
wordList = outString.toString().split(", ");
for (i = 0; i < wordList.length; i++) {
(j = 0; j < wordList.length; j++) {
if((wordList[i]!=wordList[j])&&(j>i)){
t=true;
}
}
if(t==true){
wordList1[i]=wordList[i];
}
}
- Und warum ist die Verwendung von einem Satz aus der Bild? Auch kann ich nicht verstehen, wie Sie versuchen zu entfernen, in Ihrem Beispiel.
- Bitte geben Sie ein Beispiel-Wert für
outString
. - Es ist Teil meiner Arbeit(
- Sie am Ende immer die Einstellung, dass t wahr ist, was bedeutet, dass alle Wörter kopiert. Blick auf die Logik der Schleife. t ist nie festgelegt auf false wieder! Auch, da Sie eine
j>i
Zustand, warum nicht starten Sie die zweite Schleife mit i+1 statt bei 0. Es gibt viele andere Probleme mit dem code... - Jones
StringBuffer outString = new StringBuffer("Our, aim, and, isn't, easy, you, you're, actual, and, are, aren't, and, improve, achieving, and, Obviously, and, illumination, are");
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, diesen code zu entfernen dup Worten:
1)
Ich glaube, Sie müssen verwenden Sie die equals-operator. Versuchen
statt
!=
.2) Auch Kevin hat Recht. Sie benötigen, um t wieder auf false.
3) Seite Hinweis: wie bereits von anderen schon: um noch effizienter Zu werden, sollten Sie beginnen, die innere Schleife mit
4) ein Weiterer kleiner Hinweis: Dein Ergebnis-array ist immer noch zu lang. Wenn Sie nicht wollen, zu einem
List<String>
und es ist ok zu verlieren, das ursprüngliche array, das Sie gehen könnte mit einer Lösung wie vorgeschlagen von Zim-Zam O'Pootertoot und legen Sie die original-Duplikate, null -, ein Zählerzu zählen, wie viele null-Werte zugewiesen, initialisieren Sie das neue array mit der richtigen Größe und Schleife ein letztes mal über das erste array und kopieren Sie nur die nicht-null-Werte in dein neues array.
Wenn Sie berechtigt sind, zu verwenden
List
s definieren Sie eine generische Methode, die das ziemlich leicht:Werden Sie wahrscheinlich wollen, um die Menge t wieder auf false nach dem ziehen der Wert, den Sie wollen:
Auch dies:
Wird immer true zurück, da die strings sind unveränderlich (es sei denn, Sie im Vergleich einer Zeichenfolge, um eine genaue Referenz von sich selbst, die Sie verbieten mit
j>i
). Sie müssen, um es zu ändern, dies zu sagen:Mit
.equals
wird im Vergleich, dass Sie dieselbe Zeichenfolge enthalten, nicht, dass Sie Punkt um den genauen Verweis auf eine Zeichenfolge.Nicht sicher, ob das die einzigen Probleme, oder nicht, ist ein wenig unklar aus, was gegeben.
In Ihrem inneren Schleife initialisieren
j = i + 1
...und dann compact array, wenn Sie fertig sind, entfernen Sie alle null-Werte
Wie wäre es mit einer Liste:
Einer Reihe effizienter wäre, aber. Wenn Sie nicht verwenden können, eine Liste oder ein Set, und Sie sind gezwungen, entfernen Sie die Duplikate, dann müssen Sie eine Schleife durch das array jedes mal, das für die schrecklich.
Iteration durch das array und speichern Sie in einem Hilfs -
int[]
oderList<Integer>
die Indizes von Duplikaten, die Sie finden, mit Ihren zweifor
's.Erstellen Sie ein neues Array mit der Größe dem original gleich eins minus der Größe des wiederholten Zeichenfolgen.
Durchlaufen Ihre original-array, wenn der index nicht auf Ihre Hilfs-Liste, legen Sie es auf Ihr neues Array.
Die beste und effektivste Methode ist, um angenommen
arr
ist das array, das strings enthält, und kann doppelte Werte:Versuchen, diese...