Java中的HashSet

Set概述

  • 1,Set接口继承Collection接口。
  • 2,Set接口常用实现类:
  • (1)HashSet:
    ①实现了 Set 接口
    ②“它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变”
    ③允许使用 null 元素
  • (2)LinkedHashSet
    ①HashSet的子类
    ②由于该实现类对象维护着一个运行于所有元素的双重链接列表,由于该链接列表定义了迭代顺序,所以在遍历该实现类集合时按照元素的插入顺序进行遍历
  • (3)TreeSet
    ①既实现Set接口,同时也实现了SortedSet接口,具有排序功能
    ②存入TreeSet中的对象元素需要实现Comparable接口

HashSet常用方法

  • 1、向集合中添加元素(add)
//例
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();//调用HashSet无参构造方法,在HashSet中定义了一个HashMap类型的
													//成员属性map,并在无参构造方法中,创建一个HashMap对象赋值给map。
		set.add("小强");//向集合中添加元素:小强
		set.add("小明");//注意:HashSet中没有相同的元素,不会按照保存的顺序存储数据;遍历是不能保证下次结果和上次相同
	}
}

add方法实质是map全局变量调用了Map类的方法

//HashSet中的部分源码
private transient HashMap<E,Object> map;//HashMap类型的成员属性map
public HashSet() {  //无参构造方法
        map = new HashMap<>(); //新建map对象并赋值
}

public boolean add(E e) {  //定义add方法
	return map.put(e, PRESENT)==null;//通过map调用Map中的put方法,把我们在add中传入的元素,存入到map对象的key值中
}
  • 2、获取集合容器中有多少个元素(size)
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		System.out.println(set.size());//获取集合容器中元素个数并输出
	}
}
/*运行结果
2*/
  • 3、判断集合是否为空(isEmpty):空,true;非空,false。
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		System.out.println(set.isEmpty());
		set.add("小强");
		set.add("小明");
		System.out.println(set.isEmpty());
	}
}
/*运行结果
true
false*/
  • 4、清空集合容器中元素(clear)
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		set.clear();
		System.out.println(set.isEmpty());
	}
}
/*运行结果
true*/
  • 5、判断元素中是否包含参数指定对象(contains)
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		System.out.println(set.contains("小强"));
		System.out.println(set.contains("小红"));
	}
}
/*运行结果
true
false*/
  • 6、删除元素(remove)
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		System.out.println(set.remove("小强"));
		System.out.println(set.contains("小强"));
	}
}
/*运行结果
true
false*/
HashSet遍历
  • 1、因为是无序的,所以无法使用普通for循环语句,但仍可以使用加强语句
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		for (String s : set) {
			System.out.println(s);
		}
	}
}
/*运行结果
小明
小强*/
  • 2、将HashSet中数据转存至Iterator类的对象,通过Iterator类的方法进行遍历
import java.util.HashSet;
public class Test {
	public static void main(String[] args) {
		HashSet<String> set = new HashSet<String>();
		set.add("小强");
		set.add("小明");
		Iterator<String> iterator = set.iterator();//将HashSet中数据转存至iterator
		while(iterator.hasNext()) {
			System.out.println(iterator.next());
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值