java小白——Set接口和它的容器类HashSet、TreeSet(自然排序)

  1. Set 接口是Collection 的子接口,Set 接口没有提供新增的方法。实现Set 接口的容器类中的元素是没有顺序的,并且元素不可以重复。在Java API 中提供的实现Set 接口的容器类有HashSet、TreeSet 等,它们是无序的容器类。
  2. HashSet 类
    HashSet 类实现了Set 接口,不允许出现重复元素,不保证集合中元素的顺序,允许包含值为null 的元素,但最多只能有一个。HashSet 添加一个元素时,会调用元素的hashCode()方法,获得其哈希码,根据这个哈希码计算该元素在集合中的存储位置。HashSet 使用哈希算法存储集合中的元素,可以提高集合元素的存储速度。
    HashSet 类的常用构造方法有3 种重载形式,具体如下:
    (1)构造一个新的空Set 集合。
    public HashSet()
    (2)构造一个包含指定集合中的元素的新Set 集合。
    public HashSet(Collection c)
    (3)构造一个新的空Set 集合,指定初始容量。
    public HashSet(int initialCapacity)
    代码如下:
package test;

import java.util.HashSet;

import java.util.Iterator;

public class HashSetTest {

	public static void main(String[] args) {
		HashSet hash = new HashSet();
		hash.add("56");
		hash.add("32");
		hash.add("50");
		hash.add("48");
		hash.add("48");
		hash.add("23");
		System.out.println("集合元素个数:" + hash.size());
		Iterator i = hash.iterator();
		while(i.hasNext()){
			System.out.print(i.next()+"  ");
		}

	}

}

运行结果:
集合元素个数:5
56 23 48 50 32

  1. TreeSet类
    TreeSet 类不仅继承了Set 接口,还继承了SortedSet 接口,它不允许出现重复元素。由于SortedSet 接口可以对集合中的元素进行自然排序(即升序排序),因此TreeSet 类会对实现了Comparable 接口的类的对象自动排序。

在这里插入图片描述代码如下:

package test;

import java.util.TreeSet;
import java.util.Iterator;
import java.util.SortedSet;
public class TreeSetTest {

	public static void main(String[] args) {
		TreeSet tree = new TreeSet();
		tree.add("45");
		tree.add("32");
		tree.add("68");
		tree.add("12");
		tree.add("20");
		tree.add("80");
		tree.add("75");
		System.out.println("集合元素个数:" + tree.size());
		System.out.println("---集合中的元素---");
		Iterator i = tree.iterator();
		while(i.hasNext()){
			System.out.print(i.next()+"  ");
		}
		System.out.println();
		System.out.println("集合中20~68的元素");
		SortedSet s = tree.subSet("20", "68");
		i = s.iterator();
		while(i.hasNext()){
			System.out.print(i.next()+"  ");
		}
		System.out.println();
		System.out.println("集合中45之前的元素");
		SortedSet s1 = tree.headSet("45");//不包括45
		i = s1.iterator();
		while(i.hasNext()){
			System.out.print(i.next()+"  ");
		}
		System.out.println();
		System.out.println("集合中第一个元素"+tree.first());
		System.out.println("集合中最后一个元素"+tree.last());
		System.out.println("获取并移除集合中第一个元素"+tree.pollFirst());
		System.out.println("获取并移除集合中最后一个元素"+tree.pollLast());
		System.out.println("集合中的元素");
		i = tree.iterator();
		while (i.hasNext()) {
			System.out.print(i.next() + " ");
		}
		System.out.println();
		
		}
	}

运行结果:
集合元素个数:7
—集合中的元素—
12 20 32 45 68 75 80
集合中20~68的元素
20 32 45
集合中45之前的元素
12 20 32
集合中第一个元素12
集合中最后一个元素80
获取并移除集合中第一个元素12
获取并移除集合中最后一个元素80
集合中的元素
20 32 45 68 75

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值