public static void main(String[] args) throws InterruptedException {
String fund = "450,460,470,480";
ArrayList<String> list = new ArrayList<>();
list.add("480");
list.add("485");
list.add("450");
list.add("481");
list.add("460");
list.add("366");
list.add("470");
list.add("277");
Collections.sort(list, new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return 1;
}
});
for (String s : list) {
System.out.println(s);
}
}
要让这个list排完序后,如果里面的内容存在于fund中,则排在最前面,就是450,460,470,480这几个元素要在最前,这个该怎么写
一种办法,是把范围内和范围外的数据单独排序,完了再合并。
另一种办法,做两次比较。先判断两个数据是否都在范围内,如果一个在一个不在,先后顺序马上就能确定出来;然后再对都在范围内或者都在范围外的情况下,进行普通的比较。
实际操作的时候可以先标准两个对象,用位的思路。用 1 标记
o1
在范围内,用 2 标记o2
在范围内。两个标记值相加得到总标记m
。那么,他们都在范围内或都在范围外的时候,m == 0 || m == 3
。另外,在m == 1
或者m == 2
的时候,根据m
的值就知道哪个该在前了。看了 @大马扎 的回答,补充一下代码。因为都是表示数字的定长字符串比较,所以如果要让它们变大,只需要前缀一个字母就可以了
这个方法代码比较简洁,就是会产生辅助用的 String 对象。