将特定项目移动到列表的末尾

Or *_*ith 6 java arraylist comparator

我有一个ArrayListJava:

{"deleteItem", "createitem", "exportitem", "deleteItems", "createItems"}
Run Code Online (Sandbox Code Playgroud)

我想将包含的所有字符串移动delete到列表的末尾,所以我会得到下一个:

{"createitem", "exportitem", "createItems", "deleteItem", "deleteItems"}`
Run Code Online (Sandbox Code Playgroud)

我可以创建两个子列表 - 一个用于包含'delete'字样的单词,另一个用于其他单词,然后将它们合并,但我会搜索更有效的方法.

Kri*_*mäe 12

使用自定义比较器:

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);
Run Code Online (Sandbox Code Playgroud)