package October;
import java.util.*;
public class Test {
public static void main(String[] args) {
ArrayList<Employee> employees = new ArrayList<>();
employees.add(new Employee("morty",7.7,new MyData(2013,10,19)));
employees.add(new Employee("rick",77.7,new MyData(2010,10,19)));
employees.add(new Employee("jerry",777.7,new MyData(1963,10,19)));
employees.sort(new Comparator<Employee>() {
@Override
public int compare(Employee o1, Employee o2) {
if(!(o1 instanceof Employee&&o2 instanceof Employee)){
System.out.println("类型错误");
}
//判断名字是否相同
int i=o1.getName().compareTo(o2.getName());
if(i!=0){
return i;
}
//调用MyDate类中的compareTo方法,将比较封装到MyDate中
return o1.getBithday().compareTo(o2.getBithday());
}
});
System.out.println(employees);
}
}
class Employee{
private String name;
private double salary;
private MyData bithday;
public Employee(String name, double salary, MyData bithday) {
this.name = name;
this.salary = salary;
this.bithday = bithday;
}
public MyData getBithday() {
return bithday;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Employee{" +
"name='" + name + '\'' +
", salary=" + salary +
", bithday=" + bithday +
'}'+'\n';
}
}
class MyData implements Comparable<MyData>{
private int year;
private int month;
private int day;
public MyData(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
public int getYear() {
return year;
}
public int getMonth() {
return month;
}
public int getDay() {
return day;
}
@Override
public String toString() {
return "MyData{" +
"year=" + year +
", month=" + month +
", day=" + day +
'}';
}
//把对出生日期的比较放在MyDate类里
@Override
public int compareTo(MyData o) {
int j=year-o.getYear();
if(j!=0){
return j;
}
int j1=month-o.getMonth();
if(j1!=0){
return j1;
}
return day-o.getDay();
}
}
package October;
import org.junit.jupiter.api.Test;
import java.util.*;
public class Test1 {
public static void main(String[] args) {
}
@Test
public void test1() {
DAO<User> user = new DAO<>();
//存入
user.save("01",new User(1,14,"morty"));
user.save("02",new User(2,61,"rick"));
user.save("03",new User(3,40,"jerry"));
//修改
user.update("03",new User(3,38,"beth"));
//删除
user.delete("02");
//存入ArrayList
List<User> list = user.list();
System.out.println(list);
}
}
class DAO<T>{
private Map<String, T> map=new HashMap<>();
public void save(String id,T entity){
map.put(id,entity);
}
public T get(String id){
return map.get(id);
}
public void update(String id,T entity){
map.put(id,entity);
}
/**
* 遍历map中的[k-v],将map中所有的value(T entry)封装到ArrayList
*/
public List<T> list(){
//创建ArrayList
List<T> list = new ArrayList<T>();
//获取所有的Value存入set集合中
Set<String> values = map.keySet();
//使用增强for将每一个valu取出存入list
for (Object value : values) {
//这里存入的value就是一个个的User对象
list.add(map.get(value));
}
//返回存好的集合
return list;
}
public void delete(String id){
map.remove(id);
}
@Override
public String toString() {
return "map=" + map +"\n";
}
}
class User {
private int id;
private int age;
private String name;
public User(int id, int age, String name) {
this.id = id;
this.age = age;
this.name = name;
}
@Override
public String toString() {
return "id=" + id +
", age=" + age +
", name='" + name +"\n";
}
}