【发布时间】:2021-10-29 07:40:37
【问题描述】:
我有一个包含这个值的 ArrayList
"Babel"
"Isabelle"
"Elon"
"Eloise"
我在搜索中输入“el”,我对列表进行排序,我希望得到这个结果
"Eloise"
"Elon"
"Babel"
"Isabelle"
因为"Eloise" 以我的搜索开头"el" 就像"Elon" 然后"Babel" 因为按字母顺序排列在"Isabelle" 之前
我不知道如何按数组的第一个字符排序,我尝试对名称进行子字符串化
users.sort((o1, o2) -> {
String name1 = o1.getNickname();
String name2 = o2.getNickname();
if (o1.getNickname().length() >= finalS.length()) {
name1 = o1.getNickname().substring(0, finalS.length());
}
if (o2.getNickname().length() >= finalS.length()) {
name2 = o2.getNickname().substring(0, finalS.length());
}
return name1.compareTo(name2);
});
但这 return name1.compareTo(name2); 比较切割的字符串并按字母顺序排列。
我尝试将其添加到子字符串下方
if (name1.contains(finalS)) return 1;
或
if (name2.contains(finalS)) return 1;
没什么用 Babel 总是在第一位
【问题讨论】:
-
它不包含您的搜索吗?记住!这是排序!不过滤
-
@Selvin 我只是将其从列表中删除
-
再次,排序无法删除
-
@Selvin 是的,我知道我在排序之前就这样做了
-
您在 sort 中有 4 个选择 ... 1. 都以搜索开头 - 返回比较 2.(3.) 只有第一个(第二个)以搜索开头 - 返回 1 (-1) 4。非从搜索开始-返回比较...这不是火箭科学...
标签: android sorting collections