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 + '}'; } }
四脚兽出没



浙公网安备 33010602011771号