8.12Java入门--->第十八节(四脚兽)

1、set(set,元素是不能重复的(对比的是hashcode和equals同时判断的))

HashSet 根据哈希值进行存储

如果equals返回true,Hash Code不相等,添加成功

 

LinkedHashSet

 

TreeSet 默认排序(自然排序Comparable,定制排序Comparator)

定制排序:重写Conparator的方法compare

char:Unicode排序

String:字符的Unicode排序

Boolen:默认Ture比False大

 

2、Iterator 迭代器

Array List,set都建议使用迭代器,在list,或set内容发生改变的时候,迭代器能正确地识别

 

treeSet排序算法

Comparable接口和Comparator接口的区别

返回:负整数、零或正整数,根据此对象是小于、等于还是大于指定对象。

抛出:ClassCastException - 如果指定对象的类型不允许它与此对象进行比较

package com.xian;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
public class Test812 {
    public static void main(String[] args) {
        final SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-mm-dd");
        Employee employee1=new Employee("ddd",19,new MyDate(2020,10,15));
        Employee employee2=new Employee("aaa",19,new MyDate(2020,11,15));
        Employee employee3=new Employee("ccc",19,new MyDate(1999,10,15));
        Employee employee4=new Employee("bbb",19,new MyDate(1999,11,15));
        Employee employee5=new Employee("eee",19,new MyDate(1998,12,15));
        TreeSet treeSet=new TreeSet();
        TreeSet treeSet1=new TreeSet(new Comparator<Employee>() {
            @Override
            public int compare(Employee o1, Employee o2) {
                MyDate date1=o1.getMyDate();
                MyDate date2=o2.getMyDate();
                int y1=date1.getYear(); int m1=date1.getMonth();int day1=date1.getDay();
                String s1=y1+"-"+m1+"-"+day1;
                int y2=date2.getYear(); int m2=date2.getMonth();int day2=date2.getDay();
                String s2=y2+"-"+m2+"-"+day2;
                try {
                    Date d1 = simpleDateFormat.parse(s1);
                    Date d2 = simpleDateFormat.parse(s2);
                    return d1.before(d2)?-1:d1.after(d2)?1:0;
                } catch (ParseException e) {
                    e.printStackTrace();
                }
                return 0;
            }
        });
        treeSet.add(employee1);
        treeSet.add(employee2);
        treeSet.add(employee3);
        treeSet.add(employee4);
        treeSet.add(employee5);

        Iterator iterator=treeSet.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        System.out.println("***************************");
        treeSet1.add(employee1);
        treeSet1.add(employee2);
        treeSet1.add(employee3);
        treeSet1.add(employee4);
        treeSet1.add(employee5);
        Iterator iterator2=treeSet1.iterator();
        while(iterator2.hasNext()){
            System.out.println(iterator2.next());
        }
    }
}

Comparable接口直接 类实现

package com.xian;

public  class Employee implements Comparable<Employee> {
    private String name;
    private int age;
    private MyDate myDate;
    @Override
    public int compareTo(Employee o) {
        return this.getName().compareTo(o.getName());
    }
    public Employee(String name, int age, MyDate myDate) {
        this.name = name;
        this.age = age;
        this.myDate = myDate;
    }

    public Employee() {
    }

    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 MyDate getMyDate() {
        return myDate;
    }

    public void setMyDate(MyDate myDate) {
        this.myDate = myDate;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", myDate=" + myDate +
                '}';
    }


}

四脚兽出没

 

 

 

posted @ 2020-08-12 19:02  Spring_Xian  阅读(247)  评论(0)    收藏  举报