Move specific items to the end of a list
Use custom Comparator:
List<String> strings = Arrays.asList(
"deleteItem", "createitem", "exportitem", "deleteItems", "createItems"
);
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(final String o1, final String o2) {
if (o1.contains("delete") && !o2.contains("delete")) {
return 1;
}else if (!o1.contains("delete") && o2.contains("delete")) {
return -1;
}
return 0;
}
};
Collections.sort(strings, comparator);
System.out.println(strings);
If you want something efficient and need to remove elements in the beginning and middle of a List
I would suggest using a LinkedList
instead of a array list. That would avoid rewriting the underlying array for each remove operation.
Then, you simply iterate on the list, calling remove
and addLast
for any string that contains delete
.
Of course, this is only OK if there is nothing preventing you from replacing your ArrayList
with a LinkedList
.