`
zengshaotao
  • 浏览: 787181 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

compareTo

    博客分类:
  • java
 
阅读更多

 StringcompareTo其实就是依次比较两个字符串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、hashcode以及compareTo方法! equals()方法是Object类中的一个方法,它用于比较两个对象是否相等。然而,它的默认实现是比较对象的引用(地址),而不是比较对象的实际内容。因此,在某些情况下,...

    java CompareTo使用案例

    在Java编程语言中,`compareTo()`方法是`Comparable`接口的一部分,它允许对象进行相互比较。这个方法主要用于排序,特别是当需要自定义排序规则时。本文将深入探讨`compareTo()`方法的使用,包括其基本原理、语法、...

    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类Java SE程序 TreeSet类中自定义CompareTo类...

    String类下compareTo()与compare()方法比较

    String类下compareTo()与compare()方法比较 String类下compareTo()与compare()方法是Java语言中两个常用的比较方法,但它们在使用和实现上存在一定的区别,本文将对这两个方法进行详细的比较和分析。 首先,...

    BigDecimal#compareTo - 副本.md

    BigDecimal#compareTo - 副本

    Java中比较运算符compareTo()、equals()与==的区别及应用总结

    Java中比较运算符compareTo()、equals()与==的区别及应用总结 Java 中的比较运算符有多种,包括 compareTo()、equals() 和 ==,每种运算符都有其特点和应用场景。下面将详细介绍这三种运算符的区别和应用。 ...

    aequum:Aequum 库旨在通过使用 Java 8 lambdas 在 POJO 类上编写 equals、hashCode 和 compareTo 方法时帮助删除一些样板

    ###Responsibilities### Aequum 库旨在通过使用在 POJO 类上编写equals 、 hashCode和compareTo方法时帮助删除一些样板。 请注意,此库依赖于 Java 8。 ###组件初始化指令###要使用此库,调用builder的方法Aequum...

    LINQ字符串向datetime 转换时失败的处理方法

    代码如下:from j in system.jhzdwhere j.dwbm.ToString().Trim() == branchcode.ToString().Trim()&& Convert.ToDateTime(j.yearmonth.ToString().Trim()).CompareTo(Convert.ToDateTime(timeFrom)) &gt;= 0&& Convert...

    详解java中保持compareTo和equals同步

    Java 中保持 compareTo 和 equals 同步 在 Java 中,compareTo 和 equals 是两个不同的概念,但它们之间存在着紧密的联系。compareTo 是 Comparable 接口中的方法,用于比较两个对象的大小关系,而 equals 是 ...

    java源码解析之String类的compareTo(String otherString)方法

    《深入解析Java String类的compareTo(String otherString)方法》 在Java编程中,String类是不可或缺的一部分,它的各种方法在日常开发中被广泛使用。本文将深入探讨String类中的compareTo(String otherString)方法...

    浅谈java中BigDecimal的equals与compareTo的区别

    本文将深入探讨BigDecimal的`equals`方法和`compareTo`方法的区别,这对于处理财务、金融等领域中对精度要求极高的计算至关重要。 首先,`equals`方法是Java对象的基本方法,它用于判断当前对象是否与指定对象相等...

    2024年 C# sort面试题目

    你需要重写 `CompareTo` 方法来定义对象之间的比较逻辑。 - **提供 `IComparer&lt;T&gt;` 实例**:这种方式更为灵活,可以在不修改现有类的情况下定义排序逻辑。你需要实现 `Compare` 方法来定义两个对象之间的比较逻辑。 ...

    常用排序算法分析与实现(Java版)

    while (j &gt;= 0 && array[j].compareTo(key) &gt; 0) { array[j + 1] = array[j]; j--; } array[j + 1] = key; } } ``` **2. 希尔排序** 希尔排序是直接插入排序的一种更高效的改进版本。它通过引入“增量”概念...

    死磕Lambda表达式(三):更简洁的Lambda

    我们都是阴沟里的虫子,但总还是得有人仰望...Comparator comparator = (Mask o1, Mask o2) -&gt; o1.getBrand().compareTo(o2.getBrand()); 就可以简写为: Comparator comparator = (o1, o2) -&gt; o1.getBrand().compare

    492.490.JAVA基础教程_常用类-自定义类实现Comparable自然排序(492).rar

    这个方法的实现应该遵循完全有序性,即对于任何对象`a`、`b`和`c`,如果`a.compareTo(b)`和`b.compareTo(c)`都返回非零值,那么`a.compareTo(b)`与`b.compareTo(c)`的符号应该一致。 例如,如果你正在创建一个表示...

    java8 stream自定义分组求和并排序的实现

    在实现自定义分组求和并排序时,需要注意的是,在 `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...

    java中排序报:Comparison method violates its general contract异常的解决

    return f1.get DepartureTime().compareTo(f2.getDepartureTime()); } } }; ``` 在这个例子中,我们首先比较价格,如果价格相等,则进一步比较起飞时间。这样,比较方法就遵循了Timsort所需的合同,避免了异常的...

Global site tag (gtag.js) - Google Analytics