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

发布了77 篇原创文章 · 获赞 20 · 访问量 1699
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 游动-白 设计师: 上身试试

分享到微信朋友圈

×

扫一扫,手机浏览