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);
}
写的对不对?
吐槽
佟姐和奶茶妹妹多喝热水,多喝奶茶,哈哈哈!
点赞