Set集合<HashSet集合 TreeSet集合 LinkedHashSet集合>

目录

一)Set集合概念

二)Set集合与List集合的区别:

三)Set集合的常见实现类

HashSet类代码

TreeSet类代码


一)Set集合概念

Set接口和List接口一样,同时继承了Collection接口,它与Collection接口中的方法一致,并没有对Collection接口进行功能上的扩充,只是比Collection接口更加严格了。

tips:Set集合取出元素的方式可以采用:1.迭代器,2.强for循环

二)Set集合与List集合的区别:

  1. 与List接口不同的是,Set接口中元素无序
  2. 都会以某种规则保证存入的元素不出现重复。

三)Set集合的常见实现类

  • HashSet
    底层数据结构是哈希表。(无序,唯一)
    如何来保证元素唯一性?
    1.依赖两个方法:hashCode()和equals()

  • LinkedHashSet
    底层数据结构是链表和哈希表。(FIFO插入有序,唯一)
    1.由链表保证元素有序
    2.由哈希表保证元素唯一

  • TreeSet
    底层数据结构是红黑树。(唯一,有序)
    1. 如何保证元素排序的呢?
    自然排序
    比较器排序
    2.如何保证元素唯一性的呢?
    根据比较的返回值是否是0来决定

HashSet类代码

package com.Good;
//Hashset集合
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class B_set {

	public static void main(String[] args) {
		Set set=new HashSet();
		set.add(1);//1.添加元素
		set.add("dsl"); 
		set.add(2);
		set.add("wlz");
		System.out.println(set); //[1, 2, wlz, dsl]
		set.remove("dsl");//2.删除元素
		System.out.println(set);  //[1, 2, wlz]		
		
		//获取集合的元素个数
		System.out.println(set.size()); //3
		
		//包含元素 false/true;
		System.out.println(set.contains("wlz"));//true
		
		//迭代器遍历
		Iterator it=set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());//1 2 wlz(隔行显示)
		}
		
		//增强for循环遍历
		for(Object obj:set){
			System.out.println(obj);//1 2 wlz(隔行显示)
		}

		set.clear();//清除集合
		System.out.println(set);//[]
		
	}
}

TreeSet类代码

package com.Good;
import java.util.Iterator;
//TreeSet集合 ,使用相同的类型
import java.util.Set;
import java.util.TreeSet;

public class B_treeSet {
	public static void main(String[] args) {
		Set<Integer> set=new TreeSet<>();
		set.add(5);
		set.add(2);
		set.add(4);
		set.add(3);
		System.out.println(set);  //[2, 3, 4, 5]默认排序
		set.remove(5);//删除
		set.contains(2);//包含
//		set.clear(); //清除集合
		
		//迭代器遍历
		Iterator it=set.iterator();
		while(it.hasNext()){
			System.out.println(it.next());//2 3 4(隔行显示)
		}
		
		//增强for循环
		for(Object obj:set){
			System.out.println(obj);//2 3 4(隔行显示)
		}
	}
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值