Set使用基础以及该在什么地方使用?

本文深入探讨了Java集合框架中的Set和TreeSet接口,通过实例详细介绍了它们的特点与使用方法,包括如何利用HashSet存储不重复元素及TreeSet如何实现排序。
部署运行你感兴趣的模型镜像

 这次我主要说的是关于Set[集合]、Map[键值对]。

1、Set【集合】

      Java中的Set正好和数学上直观得集合[Set]的概念是相同。Set最大的特性就是不允许在其中存放的元素是重复的。根据这个特点,我们就可以使用Set这个接口来实现像商品种类的存储需求。Set可以被用来过滤在其他容器中存放的元素,从而得到一个没有包含重复新的集合。

      在这里主要说的是HashSet与TreeHash的基础使用。

 

      1)、HashSet:无序且是不重复的

import java.util.HashSet;
import java.util.Iterator;
public class HashSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		HashSet<String> ha = new HashSet<String>();
		//添加数据
		ha.add("BBB");
		ha.add("DDD");
		ha.add("AAA");
		ha.add("CCC");
		//添加与之前的重复,则不添加进去
		ha.add("AAA");
		
		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<String> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(String s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是HashSet的方法摘要:



 

       2)、TreeSet:有序且不重复

                            顺序可以是系统默认的自然顺序,也可以在泛型为自定义的对象是重写

     自定义的一个person类

public class person implements Comparable<person> {
	private String name;
	private int age;
	/**
	 * 构造方法
	 * @param name 姓名
	 * @param age 年龄
	 */
	public person(String name,int age){
		this.name=name;
		this.age=age;
	}
	/**
	 * 重写了输出方法
	 */
	@Override
	public String toString() {
		return name + ":" + age ;
	}
	/**
	 * 重写了比较器
	 */
	@Override
	public int compareTo(person p) {
		//根据姓名排序
		return this.age-p.age;
		//根据姓名排序
		//return this.name.compareTo(p.name);
	}
}

    主函数:

import java.util.Iterator;
import java.util.TreeSet;

public class TreeSetText {
	public static void main(String[] args) {
		//创建集合,泛型可以是一个自定义对象,也可以是Java内置对象
		//这里是自定义对象,鉴于TreeSet的特性,可以重写比较器或者采用默认自然顺序排序
		TreeSet<person> ha = new TreeSet<person>();
		//添加数据
		ha.add(new person("BBB",22));
		ha.add(new person("DDD",30));
		ha.add(new person("AAA",20));
		ha.add(new person("CCC",21));
		//由于与之前的对象不是完全相同,故可以添加
		ha.add(new person("AAA",19));
		//由于与之前的对象是完全相同的,故不能添加
		ha.add(new person("AAA",20));

		//取出方式一:迭代器
		//将集合中的数据放入迭代器中遍历
		Iterator<person> iter=ha.iterator();
		//如果迭代器iter中没有元素就会返回false,就会跳出循环
		while(iter.hasNext()){
			//利用next方法逐个取得数据,并输出
			System.out.println(iter.next());
		}
		System.out.println("-----------------");
		//取出方式二:增强for
		//定义一个与集合中的数据类型相同的变量,用于临时存储数据,
		//该循环的实质:会跳到方式一,用方式一的方法输出
		for(person s:ha){
			//直接输出
			System.out.println(s);
		}
	}
}

     以下是TreeSet的方法摘要:



 



 

      以上需要注意的是HashSet适合不重复且没有顺序的数据。

                               TreeSet适合不重复且有顺序的数据

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值