JAVA Comparator接口排序

代码:

import java.util.ArrayList;

import java.util.Collections;

import java.util.Comparator;

import java.util.Iterator;

import java.util.List;

import java.util.Random;

 

public class Pact {

   public static void main(String[] args) {

      // 伪随机数类 Random

      Random rand = new Random();

      // 实例集合

      List<PersonComparator> list = new ArrayList<PersonComparator>();

 

      //伪随机数类 rand.nextInt(100-50+1)+50) 范围: 50100 [50,101)

      list.add(new PersonComparator("学号:", "170101", "姓名: ", "同学:01", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170102", "姓名: ", "同学:02", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170103", "姓名: ", "同学:03", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170104", "姓名: ", "同学:04", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170105", "姓名: ", "同学:05", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170106", "姓名: ", "同学:06", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170107", "姓名: ", "同学:07", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170108", "姓名: ", "同学:08", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170109", "姓名: ", "同学:09", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170110", "姓名: ", "同学:10", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      list.add(new PersonComparator("学号:", "170111", "姓名: ", "同学:11", "成绩:",

            rand.nextInt(100 - 50 + 1) + 50));

      // 调用sort排序 例接口

      //new Comparator 接口

      Collections.sort(list, new Comparator<PersonComparator>() {

         // 实现接口的方法 compare

         public int compare(PersonComparator o1, PersonComparator o2) {

            if (o1.getTongXie() != o2.getTongXie()) {

                // 成绩排序倒叙 02-01

                return o2.getTongXie() - o1.getTongXie();

            } else {

                // 成绩相同按学号排 compareTo 顺序排序

                return o1.getXueHao().compareTo(o2.getXueHao());

            }

         }

      });

      // 使用迭代器Iterator

      Iterator<PersonComparator> lterator = list.iterator();

      // 循环打印 hasNext()迭代器里的方法

      while (lterator.hasNext()) {

         // 赋值到 PersonComparator ata

         // 如果数据类型是接口要使用迭代器

         PersonComparator ata = lterator.next();

         //拼接打印内容

         System.out.println(ata.getName() + ata.getXueHao() + ata.getXM()

                + ata.getXingMing() + ata.getCJ() + ata.getTongXie());

      }

   }

}

 

class PersonComparator {

   // 文字学号

   private String name;

   // 学号

   private String XueHao;

   // 文字姓名

   private String XM;

   // 姓名

   private String XingMing;

   // 文字成绩

   private String CJ;

   // 成绩

   private int TongXie;

 

   // 调用方法返回集合方法

   public String getName() {

      return name;

   }

 

   public String getXueHao() {

      return XueHao;

   }

 

   public String getXM() {

      return XM;

   }

 

   public String getXingMing() {

      return XingMing;

   }

 

   public String getCJ() {

      return CJ;

   }

 

   public int getTongXie() {

      return TongXie;

   }

   //使用该构造器向集合添加对象

   public PersonComparator(String name, String XueHao, String XM,

         String XingMing, String CJ, int TongXie) {

      // this.name 集合里的值 name 添加值

      this.name = name;

      this.XueHao = XueHao;

      this.XM = XM;

      this.XingMing = XingMing;

      this.CJ = CJ;

      this.TongXie = TongXie;

   }

}

效果:

大致思路:

1先实例list集合 2再添加对象 2.1要使用类里面的方法添加必须new出方法来  3.调用Collections.sort 排序 4.实例接口Comparator 5声明迭代器:itertor 指明类类型 7.打印输出

声明自定义类 2创建交回对象类型 3.创建对象的方法 4创建对象的添加方法

说明:使用迭代器的原因是为了取出集合里的对象;再添加对象是就要声明对象的添加对象的构造器;

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值