在上一篇文章中,介绍了
Comparable 和
Comparator排序的不同,还具体实现了
Comparator排序的方法,在这里,简单实现
Comparable接口完成的排序,数据同上一篇,只是具体实现的方法改变了.
DataBean.java
package com.baomw;
import java.io.Serializable;
import java.text.MessageFormat;
public class DataBean implements Serializable,Comparable<DataBean>{
private static final long serialVersionUID = 1L;
private long id;
private String name;
private String sex;
public DataBean() {
}
public DataBean(long id, String name, String sex) {
this.id = id;
this.name = name;
this.sex = sex;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
return MessageFormat.format("id:{0},name:{1},sex:{2}", this.id,
this.name, this.sex);
}
@Override
public int compareTo(DataBean o) {
return this.name.compareTo(o.getName());
}
}
说明:需要在类内部实现Comparable接口,并实现该接口的compareTo的方法.在这里使用的
String中已经实现的compareTo的方法,按字母进行排序.
RunDemoMain.java
package com.baomw;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class RunDemoMain {
public static void main(String[] args) {
List<DataBean> dataBeans = new ArrayList<DataBean>();
dataBeans.add(new DataBean(23, "b", "w"));
dataBeans.add(new DataBean(34, "e", "w"));
dataBeans.add(new DataBean(12, "s", "w"));
dataBeans.add(new DataBean(10, "c", "w"));
dataBeans.add(new DataBean(19, "g", "w"));
dataBeans.add(new DataBean(78, "a", "w"));
dataBeans.add(new DataBean(66, "w", "w"));
dataBeans.add(new DataBean(50, "r", "w"));
System.out.println("==========排序前==========");
for (DataBean bean : dataBeans) {
System.out.println(bean);
}
System.out.println("==========排序后==========");
Collections.sort(dataBeans);
for (DataBean bean : dataBeans) {
System.out.println(bean);
}
}
}
运行后显示:
==========排序前==========
id:23,name:b,sex:w
id:34,name:e,sex:w
id:12,name:s,sex:w
id:10,name:c,sex:w
id:19,name:g,sex:w
id:78,name:a,sex:w
id:66,name:w,sex:w
id:50,name:r,sex:w
==========排序后==========
id:78,name:a,sex:w
id:23,name:b,sex:w
id:10,name:c,sex:w
id:34,name:e,sex:w
id:19,name:g,sex:w
id:50,name:r,sex:w
id:12,name:s,sex:w
id:66,name:w,sex:w
分享到:
相关推荐
在`Collections.sort()`内部,使用了一种称为“快速排序”的高效排序算法。快速排序是一种分治策略,通过选择一个基准值,将数组分为两部分,左边的元素都小于基准,右边的元素都大于基准,然后再对左右两部分递归地...
1. **自然排序**:如果 `List` 中的元素是实现了 `Comparable` 接口的对象,那么可以使用 `Collections.sort()` 方法进行自然排序。`Comparable` 接口定义了一个 `compareTo()` 方法,该方法用于比较对象之间的大小...
在Java编程语言中,排序是数据处理中一个非常常见的需求,而`Comparator`和`Comparable`接口则是实现排序的关键工具。这两个接口都是用于比较对象,但它们的应用场景和使用方式有所不同。 首先,`Comparable`接口是...
其中,list是要排序的列表,c是比较器对象,用于定义排序的规则。如果不提供比较器对象,那么将使用列表元素的自然顺序进行排序。 Comparator接口: Comparator接口是一个函数式接口,用于定义比较规则。它有两个...
自然排序是指列表中的元素必须实现Comparable接口,该接口定义了一个`compareTo(T o)`方法,用于比较当前对象与指定对象的大小关系。例如,对于整型ArrayList,Integer类已经实现了Comparable接口,所以可以直接调用...
由于我们已经实现了 Comparable 接口,Collections.sort() 方法将根据我们定义的 compareTo 方法对列表进行排序。最后,我们打印排序后的列表,以便查看排序结果。 使用 Comparable 接口对 Java 对象进行排序非常...
例如,如果你有一个`Student`类,你可以根据学生的年龄或者成绩来定义排序规则。 ```java public class Student implements Comparable<Student> { private String name; private int age; // 构造函数、...
当你需要对一个集合(如ArrayList或LinkedList)进行排序时,只需确保其中的元素类型实现了Comparable接口,然后调用Collections.sort()方法即可。 ```java List<String> list = new ArrayList(); list.add("apple...
在使用Collections.sort()方法时,需要注意的是,元素的类型必须实现Comparable接口,并且重写compareTo()方法,以便对元素进行比较排序。如果元素类型没有实现Comparable接口,将抛出ClassCastException异常。 ...
Comparable接口是定义在类内部的,例如,我们可以在Person类中实现Comparable接口,以便比较Person类的对象的大小。这样,Person类的对象就具有了比较大小的功能,可以随时随地的拿来比较大小。例如,我们可以使用...
这种方法允许用户通过提供一个实现了`Comparator`接口的对象来定义排序规则。`Comparator`接口有一个`compare()`方法,你需要重写这个方法以指定比较项目。这种方法更灵活,因为可以在类外部定义比较逻辑,适用于...
例如,当我们有一个自定义类的集合,并且需要按照多种方式进行排序时,可以先让类实现Comparable接口,表示其默认的排序规则,然后在需要其他排序规则时,创建Comparator实例并传递给Collections.sort()或者TreeSet...
此外,通过Java的工具类`Collections`和`Arrays`,可以对实现了Comparable接口的对象列表或数组进行自动排序,如使用`Collections.sort()`和`Arrays.sort()`方法。 在Java中,一些预定义的类,如`Integer`、`Double...
当我们希望一个类能够按照某种规则进行排序时,就可以让这个类实现`Comparable`接口,并重写`compareTo()`方法来定义比较逻辑。 **1. Comparable接口定义** ```java public interface Comparable<T> { int ...
在Java编程语言中,排序是常见的操作,而`Comparable`和`Comparator`接口则是实现对象排序的两种主要方式。这篇文章将深入探讨这两种实现方式及其在实际编程中的应用。 首先,`Comparable`接口位于`java.lang`包下...
- **定制排序**:通过实现`Comparator`接口定义自定义的排序规则。 #### 六、集合的实用工具类 - **Arrays**:提供静态方法对数组进行操作。 - **Collections**:提供静态方法对集合进行操作。 - **Stream API**:...
如果列表中的元素实现了 `Comparable` 接口,那么 `Collections.sort()` 会使用元素的自然顺序进行排序。例如,如果你有一个包含整数的列表,它们会按照从小到大的顺序排序。对于自定义类,需要重写 `Comparable` ...
当一个类实现了 Comparable 接口,那么该类的对象就可以直接调用 Collections.sort 或 Arrays.sort 进行排序。 例如,User 类原本没有排序功能,但当我们让它实现 Comparable<User> 接口后,就可以为 User 对象添加...
其中,Collections工具类可以用于实现单个集合的排序功能,通过使用Comparable接口或者Comparator接口来定义元素的排序规则。 常见的数据结构包括栈、队列、数组、链表和红黑树。栈是一种后进先出(LIFO)的数据...
当类的实例实现`Comparable`接口时,它们可以被直接传递给`Collections.sort()`或`Arrays.sort()`方法进行排序。 `compareTo()`方法的签名如下: ```java int compareTo(T o); ``` 这里,`T`是类型参数,表示与当前...