我想使用比较器对String类型的ArrayList进行排序。如果ArrayList存储对象,我只找到了有关如何去做的例子。Java:ArrayList <String>使用比较器进行排序(ArrayLists不存储对象)
我有一个ArrayList的字符串有10个符号,最后5个符号是数字,形成一个数字。我想按照每个字符串末尾的那些数字的升序来解决一个数组列表。我怎样才能做到这一点?
谢谢!
我想使用比较器对String类型的ArrayList进行排序。如果ArrayList存储对象,我只找到了有关如何去做的例子。Java:ArrayList <String>使用比较器进行排序(ArrayLists不存储对象)
我有一个ArrayList的字符串有10个符号,最后5个符号是数字,形成一个数字。我想按照每个字符串末尾的那些数字的升序来解决一个数组列表。我怎样才能做到这一点?
谢谢!
这是完成您的任务的一种方式; sorted
接受Comparator
对象。
List<String> result = myArrayList.stream().sorted(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))))
.collect(Collectors.toList());
或者干脆:
myArrayList.sort(Comparator.comparingInt(e -> Integer.parseInt(e.substring(5))));
不需要正则表达式。为什么不只是e.substring(5)? –
@JBNizet真的,我会用你的想法。 –
Collections.sort可以整理你有比较列表。另外你需要String.substring:
Collections.sort(list, new Comparator<String>(){
@Override
public int compare(String o1, String o2) {
return o1.substring(5).compareTo(o2.substring(5));
}
});
'String' **是一个**对象。你有什么尝试(完全)?让我们看看一些代码。 –
'private static ArrayList allCodes = new ArrayList (); //添加一些代码.... private void sortAllCodesNumbers(){ Collections.sort(allCodes,allCodes.getCompByNum()); }'' –
公共静态比较 getCompByNum() { 比较器COMP =新比较(){ @覆盖 公众诠释比较(allBooks B1,B2 allBooks) { 字符串IDnumbers1 = b1.substring(AUTHOR_ID_LENGHT + GENRE_LENGTH); int number1 = Integer.parseInt(IDnumbers1); String IDnumbers2 = b2.substring(AUTHOR_ID_LENGHT + GENRE_LENGTH); int number2 = Integer.parseInt(IDnumbers1); return number1.compareTo(number2); } }; return comp; }' –