Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich würde gerne zwei ArrayLists so kombinieren, dass Zeile 1 von ArrayList1 gleich hinter Zeile 1 von ArrayList2 kommt. Also nicht untereinander sondern nebeneinander, weil ich diese Kombination später vergleichen will. Ist so etwas möglich?
Vielen Dank für die schnelle Antwort, kannst Du vielleicht ein kleines Beispiel geben? Bin absolute Anfängerin und weiß nicht, wie du das meinst mit List<List> .
das ist halt eine liste, die listen enhält. quasi eine 2D-Liste aber ich finde sowas sehr hässlich und bin auch der Meinung, dass man sowas nie bzw. sehr selten braucht.
was hast du denn allgemein vor?
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] argv) {
List<String> list1 = new ArrayList<String>();
List<String> list2 = new ArrayList<String>();
List[] listen = new List[] { list1, list2 }; // oder auch eine Liste von
// Listen, List<List>
// halt
list1.add("123");
list1.add("3453");
list1.add("fdsf");
list1.add("456");
list2.add("123");
list2.add("asd");
list2.add("sdfsf");
list2.add("456");
for (int i = 0; i < list1.size(); i++) {
System.out.println(listen[0].get(i) + "\t|\t" + listen[1].get(i));
}
}
}
so zum Beispiel. Ob du jetzt ein Array von Listen nimmst, oder aber eine Liste von Listen ist da erstmal egal. Aber es gibt doch bessere Wege soetwas zu modelieren. Was möchtest du denn genau machen?
Du könntest nach dem Füllen auch die Werte von List 2 in List 1 an jede 2. Stelle füllen. Wäre aber sicher nicht das schnellste, Linked würde das wohl sehr viel schneller hinkriegen. Aber soetwas wäre wohl noch sehr viel schneller und schöner:
Java:
public class ColMerger<T>
{
private int colsPointer;
private List<Collection<T>> colsList;
public ColMerger()
{
super();
colsPointer = 0;
colsList = new ArrayList<Collection<T>>();
}
public void addCollection(Collection<T> col)
{
colsList.add(col);
}
public void add(T value)
{
int colsCount = colsList.size();
if(colsCount == 0)
throw new IndexOutOfBoundsException();
colsList.get(colsPointer).add(value());
incrPointer();
}
private void incrPointer()
{
int colsCount = colsList.size();
colsPointer = (colsPointer != (colsCount - 1)) ? colsPointer + 1 : 0;
}
public T get(int i)
{
int colsCount = colsList.size();
int j = i%colsCount;
return(colsList.get(j).add(i / colsSize));
}
}
Also ich habe eine Liste mit Polylines (Kanten) und eine Liste mit Rechtecken (Knoten), wo eine Überschneidung stattfindet. Jedoch tauchen hier auch die Polylines auf, bei deinen keine wirkliche Überschneidungen existieren, also die Kante geht nicht durch den Knoten, sondern berührt halt nur den Rand.
Eine Überschneidung ist ja nur vorhanden wenn eine Polyline ein Rechteck zweimal durchquert. Also dachte ich mir ich verbinde diese beiden Listen und die, die doppelt sind zeigen die Überschneidung. Das kann man bestimmt eleganter lösen, aber wie gesagt bin noch unerfahren.
Wenn ich das jetzt richtig verstanden habe, schau dir mal Rectangle#intersects(Rectangle) an. Damit kannst du Überschneidungen einfach prüfen, und musst dafür keine Listeinträge kontrollieren. ^^ (Was der Verständlichkeit sicher auch zu Gute kommt.)
Ich muss die Überprüfung für UML-Klassendiagramme machen, die in XFig gezeichnet werden. D.h. ich hab ne Fig-Datei aus der ich alle Infos hole, deshalb die Listen.