Set集合、HashSet 和 TreeSet

2019/11/5 9:45:39

目标任务:三种集合之Set集合,Set集合两种应用方法 HashSet 和 TreeSet###

什么是集合?

答: 在创建Java数组时,必须明确指定数组长度,数组一旦创建,其长度就不能被改变。为了使程序能方便的存储和操纵数目不固定的一组数据,JDK类库提供了Java集合。如:

  1. Set (集)
    • HashSet TreeSet 有这两种声明方式
  2. List(列表)
    • ArrayList
  3. Map(映射)
    • HashMap TreeMap

在这里插入图片描述


一、Set 的 HashSet声明##

1.需获取hashCode和equals的方法
 直接获取:右键---》source----》hashCode equals
2.HashSet声明Set集
Set<String> set=new HashSet<String>();
3.往Set集中添加、移除元素等
set.add("1");
set.add("2");
set.add("2");
set.remove(index);//输入下标index
set.size();//获取set集长度,相同的内容当成一个长度
4.遍历两种方法
1. forEach 遍历
public static void show(Set<String> set)
{	
	for (String string : set) {
		System.out.println(string);
	}
}
2.Iterator 迭代器 遍历
public static void show1(Set<String> set)
{
	//迭代器
	  Iterator<String> iterator = set.iterator();
	  
	  while(iterator.hasNext()) //是否还有更多的元素
	  {
		  
		  String str=iterator.next(); //取出当前指针指向的那个元素
		  System.out.println(str);
	  }
}

二、Set 的 TreeSet声明

1.需获取hashCode和equals的方法
 直接获取:右键---》source----》hashCode equals
2.需要继承Compare接口
public class Student implements java.lang.Comparable{
	//声明属性
.......
	public int compareTo(Object o) {//重写方法
    return 0;
}
3.HashSet声明Set集
Set<String> set=new TreeSet<String>();
4.往Set集中添加、移除元素等
set.add(5);
set.add(8);
set.remove(index);//输入下标index
set.size();//获取set集长度,相同的内容当成一个长度
5.遍历两种方法
1. forEach 遍历
public static void show(Set<String> set)
{	
	for (String string : set) {
		System.out.println(string);
	}
}
2.Iterator 迭代器 遍历
public static void show1(Set<String> set)
{
	//迭代器
	  Iterator<String> iterator = set.iterator();
	  
	  while(iterator.hasNext()) //是否还有更多的元素
	  {
		  
		  String str=iterator.next(); //取出当前指针指向的那个元素
		  System.out.println(str);
	  }
}
几点重要说明:
  1. Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返回,HashSet会用Hash码值去和数组长度取模,模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。
  2. 存入HashSet的集合对象中的自定义类必须覆盖hashCode(),equals()两个方法,才能保证集合中元素容不重复。在覆盖和hashCode()方法时,要使相同对象的hashCode()方法返回相同值,覆盖equals()方法再判断其内容。为了保证效率,所以在覆盖hashCode()方法时,也要尽量使不同对象尽量返回不同的Hash码值。
  3. 如果数组中的元素和要加入的对象的hashCode()返回了相同的Hash值(相同对象),才会用equals()方法来判断两个对象的内容是否相同。

TreeSet 要在类中实现比较器接口
总结:

  • set可以放入一个null,但是不能放重复的元素
  • HashSet如果放入自定义类型,需要自己定义实现 equals hashCode
  • TreeSet如果放入自定义类型,需要自定义实现equals hasCode,还需要实现java.lang.compare接口

放入自定义类型,需要自己定义实现 equals hashCode

  • TreeSet如果放入自定义类型,需要自定义实现equals hasCode,还需要实现java.lang.compare接口
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值