set hashSet 去重

一、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去重!!  compareTo0 表示重复的对象  会去掉

 3.重写放入TreeSet的对象的equals方法时,要保证equalstrue,compareTo0

 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);
	
}	
}



 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值