Java常用类每日一考(Date、Compare相关)

2022.02.10Java常用类每日一考

1.将字符串”2017-08-16”转换为对应的java.sql.Date类的对象。

(使用JDK8之前或JDK8中的API皆可)

package www.fancy.prac1;

import org.junit.Test;

import java.text.ParseException;
import java.text.SimpleDateFormat;



public class dateTest {

    @Test
    public void datetrans() throws ParseException {
        String str1 = "2017-08-16";

        SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd");
        java.util.Date d1 = sdf1.parse(str1);
        System.out.println(d1);
    }
}

 2.解释何为编码?解码? 何为日期时间的格式化?解析?

编码:字符串→字节

解码:字节→字符串

 

格式化:日期→字符串

SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。 )

解析:字符串→日期

(parse:解析字符串的文本,生成 Date。 )

 

3.提供定制排序涉及到的接口的实现类对象,并按Person类的年龄从大到小排序。

package www.fancy.exer;

import java.util.Arrays;
import java.util.Comparator;

public class Person {
    protected String name ;
    protected int age;

    public Person() {

    }

    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }public int compareTo(Object o) {
        if (o instanceof Person) {
            Person p = (Person) o;
            if (this.age > p.age) {
                return 1;
            } else if (this.age < p.age) {
                return -1;
            }
            return 0;
        }
        throw new RuntimeException("不正确的输入");
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
  • 当元素的类型没有实现java.lang.Comparable接口而又不方便修改代码, 或者实现了java.lang.Comparable接口的排序规则不适合当前的操作,那 么可以考虑使用 Comparator 的对象来排序,强行对多个对象进行整体排 序的比较。
  • 重写compare(Object o1,Object o2)方法,比较o1和o2的大小:如果方法返 回正整数,则表示o1大于o2;如果返回0,表示相等;返回负整数,表示 o1小于o2。
  • 可以将 Comparator 传递给 sort 方法(如 Collections.sort 或 Arrays.sort), 从而允许在排序顺序上实现精确控制。
  • 还可以使用 Comparator 来控制某些数据结构(如有序 set或有序映射)的 顺序,或者为那些没有自然顺序的对象 collection 提供排序。
class Test {
    public static void main(String[] args) {
        Person[] arr = new Person[4];
        arr[0] = new Person("fanfan", 24);
        arr[1] = new Person("fengfeng", 25);
        arr[2] = new Person("Ahuzhu", 27);
        arr[3] = new Person("dazhuzhu", 28);

        Arrays.sort(arr, new Comparator() {
            @Override
            public int compare(Object o1, Object o2) {
                Person p1 = (Person) o1;
                Person p2 = (Person) o2;

                return p1.compareTo(p2);
            }
        });
        System.out.println(Arrays.toString(arr));
}
}

最终实现了按年龄排序,结果如下:

[Person{name='fanfan', age=24}, Person{name='fengfeng', age=25}, Person{name='Ahuzhu', age=27}, Person{name='dazhuzhu', age=28}]

 

5. JDK 8之前和JDK8中日期、时间相关的类分别有哪些?

 JDK 8之前:

  • java.util.Date/java,sql.Date
  • SimpleDateFormat
  • Calendar

JDK8中:

  • instant
  • DateTimeFormat
  •  LocalDate、LocalTime、LocalDateTime
posted @ 2022-02-10 23:32  Fancy[love]  阅读(105)  评论(0编辑  收藏  举报