针对集合元素排序,在项目中还是比较常见,最近因为项目中有遇到,总结如下:
对List元素排序实现方法大家都知道用Collections.sort();首先给大家介绍一下Comparable与Comparator的接口的区别。
1.Comparable是对象内部需要实现的接口,如果一个对象要想用利用Array.sort进行排序,那么这个对象必须实现Comparable的接口,比较的实现规则是在对象的内部进行的,然后直接调用Collections.sort()即可。
2.Comparator接口是在对象外实现的接口,主要是方便了对没有实现Comparable接口的对象的比较和排序,比如:当我们对已经有的 一个类进行排序的时候,这个类又没有实现Comparable接口,那么我们可以利用Collections.sort(list,mew Comparator<?>(){})来排序,同时实现一个 Comparator接口实现对这个类的排序。
以下两个例子分别详细说明:实现对User类先按照名字字母先后顺序排序,名字相同情况下,再按照年龄大小排序
测试代码如下:
1、在对象内部实现具体的排序规则
User类:
public class User implements Comparable<Object>{
//年龄
private Integer age;
//名字
private String name;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
//排序方法内部实现
@Override
public int compareTo(Object o) {
User user = (User)o;
//step1、先按照名字字母顺序排序
if(this.getName() != null && user.getName() != null
&& 0 != this.getName().compareTo(user.getName())){
return this.getName().compareTo(user.getName());
}else{
//step2、 针对名字相同的再按照然后按照年龄大小排序
if (this.getAge() != null && user.getAge() != null) {
return this.getAge() - user.getAge();
}
return 0;
}
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class TestUserSort {
public TestUserSort(){
}
//sort实现按照名字、年龄大小排序
public static List<User> sortUser(){
List<User> userList = new ArrayList<User>();
String[] nameArry = {"ab","ccddd","ab","cd","faaa","ab"};
Integer[] ageArry = {3,6,9,4,7,1};
for(int i=0;i<6;i++){
User user = new User();
user.setName(nameArry[i]);
user.setAge(ageArry[i]);
userList.add(user);
}
return userList;
}
public static void main(String[] args){
List<User> userList = sortUser();
Collections.sort(userList);
for(User us : userList){
System.out.println(us.getName()+"的年龄是:"+us.getAge());
}
}
}
2、在对象外部实现具体的排序规则(推荐使用)
User类:
public class User{
//年龄
private Integer age;
//名字
private String name;
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Comparator;
public class TestUserSort {
public TestUserSort(){
}
//sort实现按照名字、年龄大小排序
public static List<User> sortUser(){
List<User> userList = new ArrayList<User>();
String[] nameArry = {"ab","ccddd","ab","cd","faaa","ab"};
Integer[] ageArry = {3,6,9,4,7,1};
for(int i=0;i<6;i++){
User user = new User();
user.setName(nameArry[i]);
user.setAge(ageArry[i]);
userList.add(user);
}
return userList;
}
public static void main(String[] args){
List<User> userList = sortUser();
Collections.sort(userList, new Comparator<User>(){
public int compare(User o1,User o2){
//step1、先按照名字字母顺序排序
if(o1.getName() != null && o2.getName() != null
&& 0 != o1.getName().compareTo(o2.getName())){
return o1.getName().compareTo(o2.getName());
}else{
//step2、 针对名字相同的再按照然后按照年龄大小排序
if (o1.getAge() != null && o2.getAge() != null) {
return o1.getAge() - o2.getAge();
}
return 0;
}
}
});
for(User us : userList){
System.out.println(us.getName()+"的年龄是:"+us.getAge());
}
}
}
两种方法运行结果:
ab的年龄是:1
ab的年龄是:3
ab的年龄是:9
ccddd的年龄是:6
cd的年龄是:4
faaa的年龄是:7
分享到:
相关推荐
当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...
然后,使用Collections.sort()方法对列表进行排序,使用PriceComparator比较器来比较书籍的价格。 结论: 本文详细介绍了Java中的Collections.sort排序机制,包括Comparator接口的使用和实现机制。通过示例代码,...
Java Collections.sort()实现List排序的默认方法和自定义方法 Java Collections.sort()是Java语言中用于对List进行排序的方法,通过使用这个方法可以对List进行默认排序,也可以根据需要实现自定义的排序规则。 ...
本篇文章将详细探讨如何使用 `Collections.sort()` 对Java List集合进行排序。 首先,`Collections.sort(List<T> list)` 是一个通用的方法,它接受一个List类型的参数,并对其进行排序。排序的标准是基于集合中元素...
Java中的`Arrays.sort()`和`Collections.sort()`是两个常用的排序函数,它们分别用于对数组和集合进行排序。这两个函数在内部实现上有所不同,但都基于高效的排序算法。 首先,`Collections.sort()`方法在处理列表...
在本文中,我们将使用 Java Collections.sort() 排序代码案例来对 Person 对象列表进行排序。 Person 对象有三个属性:名字、ID、年龄。我们将根据年龄从小到大排序,年龄相等时按照名字的字典顺序倒序排序。 代码...
本文将深入探讨如何使用 `Collections` 类对 List 进行排序操作。 首先,让我们了解 `List` 排序的基本概念。在 Java 中,`List` 是接口,它继承了 `Collection` 接口,并添加了顺序相关的操作。常见的 `List` 实现...
本文将深入探讨两种使用Collections.sort方法对List排序的方法。 首先,第一种方法是让List中的对象实现Comparable接口。Comparable接口定义了一个自然排序的规则,使得实现了该接口的类的对象可以进行比较并排序。...
在Java编程语言中,`Collections.sort()` 是一个非常重要的函数,它用于对集合中的元素进行排序。这个函数是 `java.util.Collections` 类的一个静态方法,适用于列表(List)类型的集合。`Collections.sort()` 可以...
在Java编程语言中,`Collections.sort()`方法是一个非常重要的工具,它用于对集合中的元素进行排序。这个方法主要应用于`List`接口的实现类,如`ArrayList`和`LinkedList`等。`Collections.sort()`有两种主要的排序...
在上面的代码中,我们首先创建了一个 Integer 类型的 List,然后使用 Collections.sort 方法对其进行排序。排序后的结果是默认的正序排序。 自定义类的排序 在实际应用中,我们经常需要对自定义类进行排序。...
在示例中,`Collections.sort(list)`按照默认的自然顺序对元素进行排序,使得`list`变为"123", "123", "aaa", "abc", "xyz"。 3. **`Collections.shuffle(List<T> list, Random rnd)`**:这个方法将列表中的元素...
在这个场景下,我们使用`Collections.sort()`函数对一个包含Map对象的List进行排序,然后将排序后的数据适配到ListView中。以下是关于这个主题的详细解释。 **一、Map与List的关系** 在Java中,Map是一种键值对的...
* `Collections.sort(List<T> list)`: 对列表进行自然排序。 * `Collections.sort(List<T> list, Comparator<? super T> c)`: 对列表进行自定义排序。 线程安全操作 Collections 中的线程安全操作方法包括同步和不...
在Java编程中,Collections工具类提供了许多方便的集合操作,其中`sort()`方法是一个非常重要的功能,用于对List类型的集合进行排序。本文将详细介绍`Collections.sort()`方法的两种使用方式及其示例。 ### 一、...
然后,我们可以使用Collections.sort()方法来排序列表。 ```java List<Record> list = new ArrayList(); // 添加记录到列表中 Collections.sort(list); ``` 方法二:使用Comparator接口和Collator类 在Java中,...
`Collections.sort()`是一个通用的方法,可以对List接口的实现类进行排序。在使用这个方法前,确保ArrayList中的元素类型实现了Comparable接口,这样默认按照自然顺序排序;或者提供一个Comparator来定义自定义的...
在这个例子中,我们使用了 SortList 类来对 UserInfo 对象的 userId 字段进行排序。我们可以使用泛型来指定排序的字段,然后使用反射机制来动态地取得方法。 这种方法可以实现对 List 中的对象进行排序,而不需要写...
首先,我们可以使用`Collections.sort()`方法对`List`进行排序。这个方法适用于已经实现了`Comparable`接口的元素类型,例如基本类型或自定义类。`Comparable`接口定义了一个`compareTo()`方法,用于比较类实例的...
Collections.sort 方法可以对 List 对象中的元素进行排序,包括日期字符串。 示例代码 下面是一个使用 Java 进行日期排序的示例代码: import java.util.ArrayList; import java.util.Collections; import java....