集合(set)


在这里插入图片描述

Set

Set 集合的特征: 存储的元素(引用数据类型) 无序的,不可重复的。

HashSet 内部存储是一个散列表。 HashSet内部实现是一个HashMap.

集合存在的意义:就是存储对象。

public class SetDemo {

public static void main(String[] args) {
	//接口  =  实现类
	Set<String>  set = new HashSet<String>();
	
	//实现类 =  实现类
	HashSet<String> hSet = new HashSet<String>();
	hSet.add("dahuang");
	
	//Set提供的方法
	set.add("ac");
	set.add("hello");
	set.add("java");
	set.add("sql");
	set.add("oracle");
	set.add("jack");
	set.add("zee");
	
	//Set 不可重复存放元素
	set.add("zee");
	
	//遍历Set集合
	System.out.println(set.toString());
	//数组的长度
	System.out.println(set.size());

set的方法

	//addall
	set.addAll(hSet);
	System.out.println(set.toString());
	
	//clear 清除集合中的所有元素
	//set.clear();
	//System.out.println(set.size());
	
	//是否包含某个元素
	System.out.println(set.contains("dahuang"));
	
	//hashCode
	System.out.println(set.hashCode());

集合的遍历

	//集合的遍历    toArray
	Object[] objs = set.toArray();
	for(Object obj:objs){
		String str = (String)obj;
		System.out.print(str+" ");
	}
	System.out.println("\n*************");
	//集合的遍历2: forEach
	for(String str:set){
		System.out.print(str+" ");
	}
	System.out.println("\n***********");
//集合的遍历3:  Iterator迭代器 游标
	Iterator<String>  iterator = set.iterator();
	while(iterator.hasNext()){//下一位是否有值
		System.out.print(iterator.next()+" ");//输出下一位的值
	}

hashset

Hashset集合存储对象的原理:

Hsshset 存储对象,先判断对象的hashcode值是否存在于散列表中。如果没有,就存入Set集合。
如果有,再判定,两个对象的equals 是否相同。 如果equals相同,不存储。如果requals不同,则存入。

set集合中,有两个相同的hashcode。但不可能有两个相同的equals。

public class Test {

public static void main(String[] args) {
	Student stu =new Student("张伟",8,"女");
	Student stu1 = new Student("李漂亮",18,"男");
	Student stu2 = new Student("杨丹",28,"女");
	//stu2 和stu3算不算重复
	Student stu3 = new Student("杨丹",28,"女");
	
	
	//创建集合
	Set<Student> stus = new HashSet<Student>();
	stus.add(stu);
	stus.add(stu1);
	stus.add(stu2);
	stus.add(stu3);
	//hashCode
	System.out.println(stu2.hashCode());
	System.out.println(stu3.hashCode());
	
	//在判断reques方法是否相同
	System.out.println(stu2.equals(stu3));
	
	//遍历集合
	for(Student student : stus){
		System.out.println(student);
	}

LinkedHashSet

LinkedHashSet 有链表顺序 不能重复
*/
import java.util.LinkedHashSet;
import java.util.Set;

public class LinkedHashSetDemo {

public static void main(String[] args) {

	Set<String> set = new LinkedHashSet<>();
	set.add("hello");
	set.add("jave");
	set.add("mysql");
	set.add("oracle");
	set.add("html");
	set.add("css");
	set.add("css");//不能重复
	
	for(String str : set){
		System.out.print(str+" ");
	}

结果:
在这里插入图片描述

tree

**Tree 树,
Tree 树形结构, 有序的。

TreeSet 是可排序的集合。默认按照字典或数字顺序排列。**

public class TreeSetDemo {

public static void main(String[] args) {
	Set<String> set = new TreeSet<>();
	set.add("1hello");
	set.add("2java");
	set.add("5aaaa");
	set.add("3aaa");
	set.add("7bliu");
	set.add("4gree");
	set.add("6full");
	 
	for(String str : set){
		System.out.println(str);
	}
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值