4 回答

TA貢獻1808條經(jīng)驗 獲得超4個贊
我的問題通過使用這個答案解決了我的問題Sorting Strings that contains number in Java by Bohemian 他從字符串中刪除了字母并比較了剩余的ints
Collections.sort(strings, new Comparator<String>() {
public int compare(String o1, String o2) {
return extractInt(o1) - extractInt(o2);
}
int extractInt(String s) {
String num = s.replaceAll("\\D", "");
// return 0 if no digits found
return num.isEmpty() ? 0 : Integer.parseInt(num);
}
});

TA貢獻1934條經(jīng)驗 獲得超2個贊
public Observable<User> getUsersWithBlogs() {
return Observable.fromIterable(UserCache.getAllUsers())
.filter(user -> user.blog != null && !user.blog.isEmpty())
.sorted((user1, user2) -> user1.name.compareTo(user2.name));
}

TA貢獻1796條經(jīng)驗 獲得超7個贊
使用科特林,
val comp: Comparator<Users> = Comparator { o1, o2 -> o1.Username.trim().compareTo(o2.Username.trim()) }
Collections.sort(users, comp)
對 java 做同樣的事情。

TA貢獻1812條經(jīng)驗 獲得超5個贊
把它放在你的適配器里
void sortByName(boolean isDescending) {
if (mDataList.size() > 0) {
Collections.sort(mDataList, new Comparator<Users>() {
@Override
public int compare(Users object1, Users object2) {
if (isDescending)
return object2.getUsername().toLowerCase().compareTo(object1.getUsername().toLowerCase().trim());
else
return object1.getUsername().toLowerCase().compareTo(object2.getUsername().toLowerCase().trim());
}
});
notifyDataSetChanged();
}
}
然后像這樣使用它:
adapter.sortByName( true||false );
添加回答
舉報