ich eine benutzerdefinierte Klasse News
alle Nachrichten haben eine einzigartige id
für sich genannt haben:Java Arraylist mit maßgeschneiderten addAll Methode
public class News{
public long id;
public String title;
//...
}
jetzt ich verwenden möchte, eine maßgeschneiderte ArrayList
für meine dataset
Und das ist meine Gewohnheit ArrayList
:
public class NewsArrayList<E> extends ArrayList<News> {
@Override
public boolean addAll(Collection<? extends News> c) {
ArrayList<News> b = new ArrayList<>();
boolean notExists;
for (News n : c) {
notExists = true;
for (News ex : this) {
if (n.id == ex.id) {
notExists = false;
break;
}
}
if (notExists)
b.add(n);
}
return super.addAll(b);
}
}
wenn ich diese Klassen wie diese bin mit:
ArrayList<News> myNews = mDatabase.getNewsByOffset(5,10); // will return first 5 News from database
NewsArrayList<News> mDataset = new NewsArrayList<>();
mDataset.addAll(myNews);
myNews = mDatabase.getNewsByOffset(4,10); // will return first 4 News from database
mDataset.addAll(myNews);
dann dieser Code sicher und optimiert, um nicht dupplicate News
Artikel in mDataset
mit?
und nur noch eine kurze Frage, diese break;
, alle for-loop
s oder die innere nur brechen?
....
for (News n : c) {
notExists = true;
for (News ex : this) {
if (n.id == ex.id) {
notExists = false;
break;
}
}
if (notExists)
b.add(n);
}
....
verwenden. Eine 'List' ist der falsche Sammlungstyp, wenn Duplikate vermieden werden sollen. Verwenden Sie stattdessen eine Implementierung von 'Set', z. 'TreeSet', das die Reihenfolge der Elemente entweder in ihrer _naturalen Reihenfolge_ oder in der Reihenfolge, die durch einen bei der Instanziierung eingesteckten Komparator bestimmt wird, erhält. –
Gibt es Beispiele für meinen Fall? @TimothyTruckle – Omid
Und für Ihre letzte Frage, warum Sie nicht einfach in Sysout-Anweisungen zu überprüfen, was passiert, wenn Sie Pause erreichen? – Brunaldo