String的compareTo其实就是依次比较两个字符串ASC码。如果两个字符的ASC码相等则继续后续比较,否则直接返回两个ASC的差值。如果两个字符串完全一样,则返回0.
//需要进行排序的字符串
String[] array = new String[] { "lilei", "libai", "james", "poly",
"wobfei" };
//使用简单的循环排序
for (int i = 0; i < array.length - 1; i++) {
for (int j = i + 1; j < array.length; j++) {
if (array[i].compareTo(array[j]) > 0) {
String temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
排序后:
james libai lilei poly wobfei
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
class User {
String name;
String age;
public User(String name,String age){
this.name=name;
this.age=age;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
class ComparatorUser implements Comparator{
public int compare(Object arg0, Object arg1) {
User user0=(User)arg0;
User user1=(User)arg1;
//首先比较年龄,如果年龄相同,则比较名字
int flag=user0.getAge().compareTo(user1.getAge());
if(flag==0){
return user0.getName().compareTo(user1.getName());
}else{
return flag;
}
}
}
//测试类
public class SortTest {
public static void main(String[] args){
List userlist=new ArrayList();
userlist.add(new User("dd","4"));
userlist.add(new User("aa","1"));
userlist.add(new User("ee","5"));
userlist.add(new User("bb","2"));
userlist.add(new User("ff","5"));
userlist.add(new User("cc","3"));
userlist.add(new User("gg","6"));
ComparatorUser comparator=new ComparatorUser();
Collections.sort(userlist, comparator);
for (int i=0;i<userlist.size();i++){
User user_temp=(User)userlist.get(i);
System.out.println(user_temp.getAge()+","+user_temp.getName());
}
}
}
相关推荐
关于重写equals、hashcode以及compareTo方法! equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,...
在Java编程语言中,`compareTo()`方法是`Comparable`接口的一部分,它允许对象进行相互比较。这个方法主要用于排序,特别是当需要自定义排序规则时。本文将深入探讨`compareTo()`方法的使用,包括其基本原理、语法、...
### compareTo方法详解 在Java编程语言中,`compareTo`方法是一种非常重要的方法,它主要用于对象之间的比较。此方法常用于实现`Comparable`接口时自定义排序逻辑,是Java集合框架中进行排序的基础。 #### ...
Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类Java SE程序 TreeSet类中自定义CompareTo类...
String类下compareTo()与compare()方法比较 String类下compareTo()与compare()方法是Java语言中两个常用的比较方法,但它们在使用和实现上存在一定的区别,本文将对这两个方法进行详细的比较和分析。 首先,...
BigDecimal#compareTo - 副本
Java中比较运算符compareTo()、equals()与==的区别及应用总结 Java 中的比较运算符有多种,包括 compareTo()、equals() 和 ==,每种运算符都有其特点和应用场景。下面将详细介绍这三种运算符的区别和应用。 ...
###Responsibilities### Aequum 库旨在通过使用在 POJO 类上编写equals 、 hashCode和compareTo方法时帮助删除一些样板。 请注意,此库依赖于 Java 8。 ###组件初始化指令###要使用此库,调用builder的方法Aequum...
代码如下:from j in system.jhzdwhere j.dwbm.ToString().Trim() == branchcode.ToString().Trim()&& Convert.ToDateTime(j.yearmonth.ToString().Trim()).CompareTo(Convert.ToDateTime(timeFrom)) >= 0&& Convert...
Java 中保持 compareTo 和 equals 同步 在 Java 中,compareTo 和 equals 是两个不同的概念,但它们之间存在着紧密的联系。compareTo 是 Comparable 接口中的方法,用于比较两个对象的大小关系,而 equals 是 ...
《深入解析Java String类的compareTo(String otherString)方法》 在Java编程中,String类是不可或缺的一部分,它的各种方法在日常开发中被广泛使用。本文将深入探讨String类中的compareTo(String otherString)方法...
本文将深入探讨BigDecimal的`equals`方法和`compareTo`方法的区别,这对于处理财务、金融等领域中对精度要求极高的计算至关重要。 首先,`equals`方法是Java对象的基本方法,它用于判断当前对象是否与指定对象相等...
你需要重写 `CompareTo` 方法来定义对象之间的比较逻辑。 - **提供 `IComparer<T>` 实例**:这种方式更为灵活,可以在不修改现有类的情况下定义排序逻辑。你需要实现 `Compare` 方法来定义两个对象之间的比较逻辑。 ...
while (j >= 0 && array[j].compareTo(key) > 0) { array[j + 1] = array[j]; j--; } array[j + 1] = key; } } ``` **2. 希尔排序** 希尔排序是直接插入排序的一种更高效的改进版本。它通过引入“增量”概念...
我们都是阴沟里的虫子,但总还是得有人仰望...Comparator comparator = (Mask o1, Mask o2) -> o1.getBrand().compareTo(o2.getBrand()); 就可以简写为: Comparator comparator = (o1, o2) -> o1.getBrand().compare
这个方法的实现应该遵循完全有序性,即对于任何对象`a`、`b`和`c`,如果`a.compareTo(b)`和`b.compareTo(c)`都返回非零值,那么`a.compareTo(b)`与`b.compareTo(c)`的符号应该一致。 例如,如果你正在创建一个表示...
在实现自定义分组求和并排序时,需要注意的是,在 `compareTo` 方法中,如果使用 `return this.getTime().compareTo(o.getTime());`,那么结果将不正确。这是因为,在分组求和时,如果使用了排序,那么分组时对相同...
if (l1.Data.CompareTo(l2.Data) ) { tail.Next = l1; l1 = l1.Next; } else { tail.Next = l2; l2 = l2.Next; } tail = tail.Next; } if (l1 != null) { tail.Next = l1; } else if (l2 != null...
return f1.get DepartureTime().compareTo(f2.getDepartureTime()); } } }; ``` 在这个例子中,我们首先比较价格,如果价格相等,则进一步比较起飞时间。这样,比较方法就遵循了Timsort所需的合同,避免了异常的...