Java初学(9)——Set接口及其实现类(HashSet and TreeSet)

本文详细介绍了HashSet和TreeSet两种Java集合类的使用方法及特点。HashSet利用哈希算法存储元素,提高存取效率;TreeSet则实现了排序功能,支持元素的升序排列。文章通过实例展示了如何操作这两种集合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HashSet
HashSet按照哈希算法存储集合中的元素,提高集合元素的存储速度,向集合中添加一个元素时,
HashSet会调用该元素的hashCode()方法,获取哈希吗,然后根据这个哈希码计算出该元素在集合中的存储位置
注意:在Set集合中的元素是不能重复的

package HashSetClass;

import java.util.HashSet;
import java.util.Iterator;
public class SetDemo {
    public static void main(String[] args) {
        HashSet<String> name = new HashSet<>();
        name.add("大大大");
        name.add("小小小");
        name.add("大大大");
        name.add("小小小");
        name.add("中");
        System.out.println("集合中的个数是:" + name.size() + "具体如下:");
        Iterator<String> it = name.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
        
    }

}

在这里插入图片描述

TreeSet
TreeSet类同时实现了Set接口和SortSet接口。可以实现对集合的升序排序。
TreeSet包含的常用方法:
E first():返回集合第一个元素
E last():返回集合最后一个元素
E poolFirst():获取并移除集合第一个元素
E poolLast():获取并移除集合最后一个元素
SortSet subSet(E fromElement, E toElement):返回一个新集合,包含原集合fromElement和toElement之间的对象,
前包括后不包括
SortSet headSet(E toElement):返回一个新集合,包含原集合toElement之前的对象,不包括toElement
SortSet tailSet(E fromElement):返回一个新集合,包含原集合fromElement之后的对象,包括fromElement

package HashSetClass;

import java.sql.SQLOutput;
import java.util.Iterator;
import java.util.Scanner;
import java.util.SortedSet;
import java.util.TreeSet;

public class TreeSetDemo {
    public static void main(String[] args) {
        TreeSet<Double> gz = new TreeSet<>();
        Scanner myinput = new Scanner(System.in);
        for (int i = 0; i < 6; i++) {
            System.out.println("输入第" + (i+1) + "位的工资");
            double sr = myinput.nextDouble();
            gz.add(sr);
        }
        Iterator<Double> it = gz.iterator();
        System.out.println("工资从低到高:");
        while(it.hasNext()) {
            System.out.println(it.next());
        }
        //显示工资比6000低的工资
        SortedSet<Double> low = gz.headSet(6000.0);
        System.out.println("显示工资比6000低的工资");
        for (int i = 0; i < low.toArray().length; i++) {
            System.out.println(low.toArray()[i]+"\t");
        }
        //显示工资比8000高的工资
        SortedSet<Double> high = gz.tailSet(8000.0);
        System.out.println("显示工资比8000高的工资");
        for (int i = 0; i < high.toArray().length; i++) {
            System.out.println(high.toArray()[i]+"\t");
        }
    }
}
输入第1位的工资
3000
输入第2位的工资
6000
输入第3位的工资
7000
输入第4位的工资
8000
输入第5位的工资
4000.6
输入第6位的工资
10000.2828
工资从低到高:
3000.0
4000.6
6000.0
7000.0
8000.0
10000.2828
显示工资比6000低的工资
3000.0	
4000.6	
显示工资比8000高的工资
8000.0	
10000.2828	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值