Comparable

本文展示了如何使用Java的Comparator接口和Comparable接口创建一个名为Sorted0和Sorted的自定义排序类,通过compareTo方法实现数字数组的升序排列。主要关注类的定义、toString方法和compareTo方法的实现,以及在实际场景中的应用。
摘要由CSDN通过智能技术生成
package com.yao;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;

/**
 * @author
 * @date 2020/12/7 17:38
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sorted0 implements Comparable<Sorted0>{
    private Integer num1;
    @Override
    public String toString() {
        return "" +num1;
    }

    public int compareTo(Sorted0 o) {

        return (num1 > o.num1 ? 1 : (num1 == o.num1 ? 1 : -1));
    }

    public static void main(String[] args) {

        TreeSet<Sorted0> set=new TreeSet<Sorted0>();

        List<Integer> srcData = Arrays.asList(1,2,5,7,3,2,1,7);

        for (int nums:srcData) {
            System.out.println(nums);
        }

        for (Integer nums:srcData) {
            set.add(new Sorted0(nums));
        }

        System.out.println(set);
    }


}

 


 

 public int compareTo(Sorted0 o) {

        return (num1 > o.num1 ? 1 : (num1 == o.num1 ? 0 : -1));
    }

  • o -- 要比较的对象。

 

返回值是整型,它是先比较对应字符的大小(ASCII码顺序),如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值,如果第一个字符和参数的第一个字符相等,则以第二个字符和参数的第二个字符做比较,以此类推,直至比较的字符或被比较的字符有一方结束。

  • 如果参数字符串等于此字符串,则返回值 0;
  • 如果此字符串小于字符串参数,则返回一个小于 0 的值;
  • 如果此字符串大于字符串参数,则返回一个大于 0 的值。

 

 

package com.yao;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Arrays;
import java.util.List;
import java.util.TreeSet;

/**
 * @author
 * @date 2020/12/7 17:38
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sorted implements Comparable<Sorted>{
    private Integer num1;
    private Integer num2;
    @Override
    public String toString() {
        return "{" +
                + num1 +","+ num2 +
                '}';
    }

    public int compareTo(Sorted o) {
        if(num2>o.num2) return 1;
        else if(num2<o.num2) return -1;
        else{
            if(num1>o.num1) return -1;
            else return  1;
        }
    }

    public static void main(String[] args) {

        TreeSet<Sorted> set=new TreeSet<Sorted>();

        List<int[]> srcData = Arrays.asList(new int[]{100,100},new int[]{2,100},new int[]{3,100},new int[]{1,-1},new int[]{10,80});

        for (int[] nums:srcData) {
            System.out.println((nums[0]+"   "+nums[1]));
        }

        for (int[] nums:srcData) {
            set.add(new Sorted(nums[0],nums[1]));
        }

        System.out.println(set);
    }


}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值