DESKTOP-2IHO1NT_20200901秦文亮

问题

1、自然排序和比较器排序


package qin.wenliang;

import java.util.Arrays;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;

public class DateSort1 implements  Comparable{

    @Override
    public int compareTo(Object o) {
        return 0;
    }
    public static void main(String[] args) {

        final Random random = new Random();

        final Calendar calendar = Calendar.getInstance();

        final Date[] dates = new Date[5];

        // 使用循环对 dates 数组进行初始化
        for (int i = 0; i < dates.length; i++) {
            // 随机产生 年份、月份、日期,并将其设置到 calendar 对象中
            calendar.set(random.nextInt(50) + 1970, random.nextInt(12)+1, random.nextInt(30)+1);
            // 随后使用 calendar 的 getTime 来获取 Date 实例
            Date date = calendar.getTime();

            dates[i] = date;
        }
        // 使用循环输出排序前的日期
        // 使用 Date 类提供的方法,对日期进行比较并排序 (自然排序)
        // 使用循环输出排序后的日期
        // if(dates[i].compareTo(dates[i+1])<0) {
        for (int i = 0; i < dates.length; i++) {
            System.out.println(dates[i]);
        }
        System.out.println("-----------------------------------");
        Arrays.sort(dates);
        for (int i = 0; i < dates.length; i++) {
            System.out.println(dates[i]);
        }
    }
    
}


实现自然排序接口 Comparable ,然后重写compareTo方法,然后用Arrays.sort(dates);进行排序,

然后用循环数出这个数组。

calendar.set(random.nextInt(50) + 1970, random.nextInt(12)+1, random.nextInt(30)+1);
这一行在生成的随机元素的有点模糊。
package qin.wenliang;

import java.util.Arrays;
import java.util.Calendar;
import java.util.Comparator;
import java.util.Date;
import java.util.Random;

public class DateSort2 implements Comparator {
    
    @Override
    public int compare(Object o1, Object o2) {
        if( o1.equals(o2)) {
            return -1 ;
        } else if( o1.after(o2) ) {
            return 0 ;
        } else {
            return 1 ;
        }
    }

    public static void main(String[] args) {
        final Random random = new Random();

        final Calendar calendar = Calendar.getInstance();

        final Date[] dates = new Date[5];

        // 使用循环对 dates 数组进行初始化
        for (int i = 0; i < dates.length; i++) {
            // 随机产生 年份、月份、日期,并将其设置到 calendar 对象中
            calendar.set(random.nextInt(50) + 1970, random.nextInt(12), random.nextInt(31));
            // 随后使用 calendar 的 getTime 来获取 Date 实例
            Date date = calendar.getTime();
            dates[i] = date;
        }
        // 使用循环输出排序前的日期
        // 使用 Date 类提供的方法,对日期进行比较并排序 (比较器排序)
        // 使用循环输出排序后的日期
        Comparator<Date> comparator = new DateComparator() ;
        Arrays.sort(dates,comparator);
        for (int i = 0; i < dates.length; i++) {
            System.out.println(dates[i]);
        }
    }

}

重写compare 时怎么获取随机产生的日期进行比较,重写里面可以用equals方法进行比较吗?

15行和40行报错,没有理解。

Comparator<Date> comparator = new DateComparator() ;
没有理解。

2、求一个非空数组的第三大的数

public static void main(String[] args) {
        
        int[]arr= {73,78,19,5,78,76,76,73};
        
        int a=arr[0];
        int b=arr[0];
        int c=arr[0];
        for(int i=0;i<arr.length;i++) {
            if(arr[i]>a) {
                b=a;
                a=arr[i];
            }else if(arr[i]!=a&&arr[i]>b) {
                c=b;
                b=arr[i];
            }else if(arr[i]!=b&&arr[i]>c){
                c=arr[i];
            }
        }
        System.out.println(c);
    }

写的对不对?

吐槽

佟姐和奶茶妹妹多喝热水,多喝奶茶,哈哈哈!

标签


© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1