一、Set
Set
HashSet SortedSet(接口)
LinkedHashSet NavigableSet(接口)
TreeSet
1.HashSet
特点:去重、无迭代顺序
演示代码:
public class TestHashSet {
public static void main(String[] args) {
Set<String> set = new HashSet<String>();
set.add("aaa");
set.add("bbb");
set.add("ccc");
set.add("ddd");
set.add(new String("aaa"));//去掉了
for(String s:set){
System.out.println(s);
}
}
}
2.LinkedHashSet是有迭代顺序的
3.HashSet是如何去重的?
通过hashCode和equals去重
hashCode()和equals都相等 才算意义上相同的对象 第二个会被去掉 hashCode()和equals只要有一个不相等 就不算意义上相等的对象
4.TreeSet(有排序顺序的Set)
特点:
1.有排序顺序的set,放入该set的对象必须实现Comparable接口的compareTo方法来定义排序规则
2.使用compareTo去重!! compareTo为0 表示重复的对象 会去掉
3.重写放入TreeSet的对象的equals方法时,要保证equals为true时,compareTo为0
4.equals使用的条件 compareTo也要用
自然排序代码如下:
public class TestreeSet {
public static void main(String[] args) {
/*Set <Integer> set=new TreeSet<Integer>();//对数字的排序
set.add(5);
set.add(6);
set.add(1);
set.add(3);
for(int c:set){
System.out.print(c+" ");
}
*/
/*Set <String> set=new TreeSet<String>();//对字符串进行排序1.先按照第一个字符的ascll码进行排序
2.再按照后面的进行排序
set.add("aaa");
set.add("bbb");
set.add("abb");
for(String c:set){
System.out.print(c+" ");
}*/
/*Set<Date> set=new TreeSet<Date>();
String s=new String("2017-07-19 00:00:00");
String s2 = new String("2017-07-18 00:00:00");
String s3 = new String("2017-07-21 00:00:00");
String s4 = new String("2017-07-20 00:00:00");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
try{
Date date1=sdf.parse(s);
Date date2=sdf.parse(s2);
Date date3 = sdf.parse(s3);
Date date4 = sdf.parse(s4);
set.add(date1);
set.add(date2);
set.add(date3);
set.add(date4);
for(Date o:set){
System.out.println(o+" ");
}
}catch(ParseException e){
e.printStackTrace();
}*/
Date date=new Date();
System.out.println(date);
SimpleDateFormat sdf=new SimpleDateFormat();
String currentTime=sdf.format(date);
System.out.println(currentTime);
}
}