我有一个String列表:
List<String> listString = new ArrayList<String>();
listString.add("faq");
listString.add("general");
listString.add("contact");
Run Code Online (Sandbox Code Playgroud)
我在列表上做了一些处理,我想对这个列表进行排序,但我希望"general"始终以第一个位置结束.谢谢 ;)
pol*_*nts 15
做Collections.sort它subList而不是.
List<String> list = new ArrayList<String>(
Arrays.asList("Zzz...", "Two", "One", "Three")
);
Collections.sort(list.subList(1, list.size()));
System.out.println(list);
// "[Zzz..., One, Three, Two]"
Run Code Online (Sandbox Code Playgroud)
subList(int fromIndex, int toIndex)
fromIndex,包含的和toIndex独占的列表部分的视图.返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然.返回的列表支持此列表支持的所有可选列表操作.如果特殊元素不在索引0处,那么只需将其放在那里,然后按如下方式对其进行排序:
List<String> list = new ArrayList<String>(
Arrays.asList("Four", "Five", "Zzz...", "Two", "One", "Three")
);
Collections.swap(list, list.indexOf("Zzz..."), 0);
Collections.sort(list.subList(1, list.size()));
System.out.println(list);
// "[Zzz..., Five, Four, One, Three, Two]"
Run Code Online (Sandbox Code Playgroud)
Collections.swap(List<?> list, int i, int j)
Pau*_*lin 15
我喜欢@ Petar的方法,但另一种方法是使用自定义比较器对其进行排序,该比较器总是说"一般"在它被比较之前.
Collections.sort(list, new Comparator<String>()
{
int compare(String o1, String o2)
{
if (o1.equals(o2)) // update to make it stable
return 0;
if (o1.equals("general"))
return -1;
if (o2.equals("general"))
return 1;
return o1.compareTo(o2);
}
});
Run Code Online (Sandbox Code Playgroud)
Pet*_*hev 11
对列表进行排序,其中没有"general",然后将其添加到开头.
| 归档时间: |
|
| 查看次数: |
8174 次 |
| 最近记录: |