Ich habe eine Liste von Daten ID wie in der Lage, sie durch X zu duplizieren, also speziell, wenn meine Liste liest A, B, C und X = 3 ID wie es A zu lesen, A, A, B, B, B, C, C, C versuchten, dies durch eine Schleife zu tun, aber steckte zuerst mit der Listengröße immer wachsenden und dann mit dem Setzen des Elements in den richtigen Index wieder wie die Liste wächst kann jemand Hilfe?Wie man Elemente in einer Liste in Java duplizieren
Antwort
Für so etwas wie dieses, ist es wahrscheinlich einfacher zu lernen, indem sie zu sehen und nicht durch Erklärungen zu hören, was zu tun ist, um hier einige einfache Arbeitscode:
public List<Date> repeat(List<Date> dates, int times)
{
List<Date> results = new ArrayList<>();
for (Date d : dates)
{
for (int i = 0; i < times; ++i)
results.add(d.clone());
}
return results;
}
Wir Erstellen Sie eine neue "Ergebnisliste", die wir erstellen, indem Sie über die Eingabeliste iterieren - für jedes Element in der Eingabeliste fügen wir dieses Element mehrmals zur Ergebnisliste hinzu. Dies macht den Algorithmus viel einfacher als versuchen, Ihre Artikel in der gleichen Liste zu duplizieren!
Beachten Sie, dass wir das Datum jedes Mal klonen - sonst werden wir mit einer Liste enden, die Sequenzen von Elementen enthält, die alle auf das gleiche tatsächliche Date
Objekt zeigen - in den meisten Fällen nicht ideal.
können Sie Generika verwenden diese Methode mehr wiederverwendbar zu machen - am besten, wir möchten, dass dies für alle Cloneable
Objekten arbeiten, nicht nur Date
s:
public static <T extends Cloneable> List<T> repeat(List<T> in, int times)
{
List<T> results = new ArrayList<>();
for (T x : in)
{
for (int i = 0; i < times; ++i)
results.add(x);
}
return results;
}
Das ist großartig vielen Dank, also tbh Ich habe mich nur in den Fuß geschossen, indem ich versucht habe es zu behalten in der ursprünglichen Liste – martinseal1987
@ martinseal1987 Genau - es gibt Algorithmen, die leicht gemacht werden können ["in-place"] (https://en.wikipedia.org/wiki/In-place_algorithm) - das ist einfach nicht einer von Sie. – hnefatl
Ich schrieb die Lösung in C#, wie ich keine Java-IDE auf diesem Computer habe, aber es ist nur ein Haar anders als Java. Die Logik (und der Großteil des Codes) ist gleich. Versuchen Sie folgendes:
public static List<string> createList(List<string>originalList, int x)
{
List<string> newList = new List<string>();
foreach(string s in originalList)
{
for(int i=0; i<x; i++)
{
newList.Add(s);
}
}
return newList;
}
Das sieht so aus, als würde es funktionieren, aber ich gebe die Punkte für die Lösung unten, da es in Java ist. Vielen Dank für die schnelle Antwort. – martinseal1987
Sie müssen eine verknüpfte Liste hinzufügen. Verwenden Sie dieses Programm, um die Funktionalität zu erreichen.
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
LinkedList<String> al=new LinkedList<>();
al.add("A");
al.add("B");
al.add("C");
modify(al,4);
System.out.println(al);
}
private static void modify(LinkedList<String> al, int X) {
int size=al.size();
for(int j=0;j<size;j++)
{
for(int i=1;i<X;i++)
{
al.add(X*j, al.get(X*j));
}
}
}
}
Sie brauchen keine 'LinkedList', jede Liste wird funktionieren, wenn Sie diese Methode verwenden, obwohl' LinkedList' einen Vorteil hat, den Sie nicht erwähnt haben. Und vielleicht möchten Sie eine Erklärung hinzufügen - es ist nicht sofort klar, welche Zeilen wie 'al.add (X * j, al.get (X * j))' tun. Schließlich ist es vielleicht eine gute Idee, den Code aufzuräumen - Sie mischen Brace-Stile und haben einen zufälligen Kommentar. – hnefatl
Mein Freund, ich habe die verknüpfte Liste verwendet, weil er Änderungen in der gleichen Liste wollte und nicht nach einer neuen Liste gefragt. Das Einfügen dazwischen wird immer über eine verknüpfte Liste und nicht über eine andere Liste empfohlen. Mein Ziel war es, die gleiche Liste zu verwenden, um das Ergebnis zu erzielen. Bitte stimmen Sie nicht ab, wenn Sie sich nicht sicher sind. –
- 1. Separate Liste gemäß Elemente duplizieren
- 2. duplizieren jedes Mitglied in einer Liste - Python
- 3. duplizieren jedes Element in einer Liste beliebiger Zeiten
- 4. Wie man Elemente in einer Liste in Strings im Racket
- 5. Größe einer Liste in Java
- 6. Doppelte Elemente in einem Stream in Java
- 7. Wie vergleicht man Elemente einer Liste mit Elementen einer Karte in Java?
- 8. Elemente in einer verschachtelten Liste
- 9. Wie man bestimmte Elemente in einer Liste löschen
- 10. Wie speichert man die Elemente einer Liste einzeln in R?
- 11. Wie ändert man Elemente in einer generischen Liste mit foreach?
- 12. wie man Elemente zu einer Liste in Python hinzufügt
- 13. Wie man neue Elemente zu einer Liste in Gosu
- 14. Wie kann man li Elemente in nur einer Liste verschieben?
- 15. Wie gruppiert man ähnliche Elemente in einer Liste?
- 16. ersetzenden Elemente in einer Liste
- 17. Summe der getrennten Elemente in einer Liste
- 18. Wie man optische Elemente in Java implementiert
- 19. Repeating Elemente in einer Liste
- 20. Schleife - wie alle Elemente in einer Liste
- 21. Java alle bestimmen Elemente sind die gleichen in einer Liste
- 22. Split-Elemente in einer Liste
- 23. Elemente einer Liste in Prolog
- 24. Kalendertyp Elemente in einer Liste
- 25. Wie man eine Liste in Java umkehrt?
- 26. Zählen Elemente einer Liste mit While-Schleife in Java
- 27. Java - Iterieren über alle zwei Elemente in einer Liste
- 28. Elemente in einer Liste vergleichen und austauschen. Java
- 29. LINQ - Alle Elemente in einer Liste in einer Liste abrufen?
- 30. entfernen Sie Elemente in einer Liste in einer anderen Liste
Klingt so, als müssten Sie Ihre Startliste nicht ändern, sondern stattdessen eine neue Liste für Ihre Ergebnisse erstellen. – hnefatl
Erstellen Sie eine neue Liste, die X-mal mit jedem Element gefüllt wird. Dann gebe entweder diese Liste zurück oder lösche die alte und ersetze ihren Inhalt durch eine neue Liste. – Pshemo