使用自定义排序顺序对象的数组列表进行排序

使用自定义排序顺序对象的数组列表进行排序

我正在为我的地址簿应用程序实现一个排序功能。

我想整理一下ArrayList<Contact> contactArrayContact是一个包含四个字段的类:名称、家庭号码、移动电话和地址。我想整理一下name.

如何编写自定义排序函数来完成此操作?


qq_花开花谢_0
浏览 647回答 3
3回答

Smart猫小萌

除了已经发布的内容之外,您还应该知道,从Java 8开始,我们可以缩短代码并编写如下:Collection.sort(yourList,&nbsp;Comparator.comparing(YourClass::getFieldToSortOn));或者因为现在的列表sort方法yourList.sort(Comparator.comparing(YourClass::getFieldToSortOn));说明:从Java 8开始,函数接口(只有一个抽象方法的接口-它们可以有更多的默认或静态方法)可以很容易地使用以下方法实现:兰巴斯&nbsp;arguments -> body或方法参考&nbsp;source::method.自Comparator<T>只有一个抽象方法int compare(T o1, T o2)它是功能接口。所以,而不是(例如)@BalusC&nbsp;回答)Collections.sort(contacts,&nbsp;new&nbsp;Comparator<Contact>()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;int&nbsp;compare(Contact&nbsp;one,&nbsp;Contact&nbsp;other)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;one.getAddress().compareTo(other.getAddress()); &nbsp;&nbsp;&nbsp;&nbsp;}});我们可以将此代码简化为:Collections.sort(contacts,&nbsp;(Contact&nbsp;one,&nbsp;Contact&nbsp;other)&nbsp;->&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;one.getAddress().compareTo(other.getAddress());});我们可以通过跳过来简化这个(或任何)lambda。参数类型(Java将根据方法签名推断它们)或{return&nbsp;...&nbsp;}所以而不是(Contact&nbsp;one,&nbsp;Contact&nbsp;other)&nbsp;->&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;one.getAddress().compareTo(other.getAddress();}我们可以写(one,&nbsp;other)&nbsp;->&nbsp;one.getAddress().compareTo(other.getAddress())现在也是Comparator有类似的静态方法comparing(FunctionToComparableValue)或comparing(FunctionToValue, ValueComparator)我们可以用它轻松地创建比较器,它应该比较来自对象的一些特定值。换句话说,我们可以将上面的代码重写为Collections.sort(contacts,&nbsp;Comparator.comparing(Contact::getAddress));&nbsp;//assuming&nbsp;that&nbsp;Address&nbsp;implements&nbsp;Comparable&nbsp;(provides&nbsp;default&nbsp;order).

杨__羊羊

本页告诉您有关排序集合(如ArrayList)的所有需要了解的信息。基本上你需要使你Contact类实现Comparable界面创建方法public int compareTo(Contact anotherContact)在里面。一旦你这么做了,你就可以打电话Collections.sort(myContactList);,哪里myContactList是ArrayList<Contact>(或任何其他收集Contact).还有另一种方法,包括创建一个比较器类,您也可以从链接的页面中了解到这一点。例子:public&nbsp;class&nbsp;Contact&nbsp;implements&nbsp;Comparable<Contact>&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;.... &nbsp;&nbsp;&nbsp;&nbsp;//return&nbsp;-1&nbsp;for&nbsp;less&nbsp;than,&nbsp;0&nbsp;for&nbsp;equals,&nbsp;and&nbsp;1&nbsp;for&nbsp;more&nbsp;than &nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;compareTo(Contact&nbsp;anotherContact)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;result&nbsp;=&nbsp;0; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;getName().compareTo(anotherContact.getName()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(result&nbsp;!=&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result&nbsp;=&nbsp;getNunmber().compareTo(anotherContact.getNumber()); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(result&nbsp;!=&nbsp;0) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;result; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;... &nbsp;&nbsp;&nbsp;&nbsp;}}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java