API学习TreeSet

news/2024/6/18 2:13:21 标签: api, treeSet, SortedSet
package com.wonders.week01.collection;

import java.util.Comparator;
import java.util.Iterator;
import java.util.NavigableSet;
import java.util.SortedSet;
import java.util.TreeSet;

/**
 * JDK1.7
 * TreeSet
 * (1)继承自AbstractSet,实现了Set接口和SortedSet及NavigableSet接口
 * (2)NavigableSet接口的实现是基于TreeMap的,元素的顺序是使用它们的自然排序,或者是在设置创建时提供的比较器,这取决于使用的构造函数
 * (3)对于add, remove 和contains的实现的操作的算法时间复杂度是log(n)
 * (4)TreeSet是一个非线程安全的类
 * (5)请注意,如果要正确地实现set接口,那么一个set(无论是否提供显式比较器)所维护的排序必须与equals保持一致
 * 可以通过阅读Comparator 或者Comparable对于与equals保持一致定义会有更加细致的了解。这是因为Set接口是在equals操作的条件下定义的
 * 但是TreeSet实例使用它的compareTo(或compare)方法执行所有元素比较。从Set集合的角度来看,equals个方法被认为等于的两个元素是相等的
 * (6)既是集合的顺序与equals不保持一致,但是集合的行为是被定义好的,它只能遵守Set接口的一般规则。
 * @author liyongyong
 *
 */
public class TreeSetTest {

	public static void main(String[] args) {
		TreeSet<Integer> treeSet = new TreeSet<Integer>();
		TreeSet<Integer> tSet = new TreeSet<Integer>();
		//向集合中添加元素,如果元素不存在则添加到集合中返回true,如果集合中存在此元素,则返回false,原来存在的元素不会改变
		treeSet.add(1);
		treeSet.add(2);
		treeSet.add(3);
		tSet.add(4);
		tSet.add(5);
		tSet.add(7);
		//返回treeset集合元素的个数
		int size = treeSet.size();
		System.out.println("集合元素个数是 : " + size);
		//返回set集合中元素的迭代,按照升序的顺序进行迭代
		Iterator<Integer> result = treeSet.iterator();
		while (result.hasNext()) {
			Integer integer = (Integer) result.next();
			System.out.print(integer + "  ");
		}
		System.out.println();
		//返回set集合中元素的迭代,按照降序的顺序进行迭代
		Iterator<Integer> res = treeSet.descendingIterator();
		while (res.hasNext()) {
			Integer integer = (Integer) res.next();
			System.out.print(integer + "  ");
		}
		System.out.println();
		//返回set集合中元素的迭代,按照降序的顺序进行迭代
		NavigableSet<Integer>  num =tSet.descendingSet();
		for (Integer integer : num) {
			System.out.print( integer + "  ");
		}
		System.out.println();
		//判断集合是否为空,为空返回true,否则返回false
		boolean empty = treeSet.isEmpty();
		System.out.println("集合是否为空: " + empty);
		//判断集合中是否包含此元素
		boolean contains = treeSet.contains(1);
		System.out.println("集合中是否包含此对象 : " + contains);
		//从集合中移除一个对象,如果移除成功返回true,否则返回false
		boolean remove = treeSet.remove(1);
		System.out.println("集合中的元素1是否被成功移除 : " + remove);
		//移除掉该集合中的所有元素,没有返回值
		//treeSet.clear();
		//把集合中元素添加到Set中
		treeSet.addAll(tSet);
		for(Integer integer:treeSet){
			System.out.print(integer + "	");
		}
		System.out.println();
		//返回该集合的部分视图,其元素范围从fromElement到toElement。
		//第一个参数表示从哪个元素开始,第三个元素表示到哪个元素截止
		//第二个元素为true表示包含开始元素,为false表示不包含开始元素
		//第四个元素为true表示包含结尾元素,为false表示不包含结束元素
		NavigableSet<Integer> integer = treeSet.subSet(3, true, 4, true);
		for (Integer result1 : integer) {
			System.out.print( result1 + "  ");
		}
		System.out.println();
		//返回集合中的一部分数据,返回的集合数据是当第二个参数为true时,小于或者等于第一个参数的值
		NavigableSet<Integer> num1 = treeSet.headSet(4,true);
		for (Integer integer2 : num1) {
			System.out.print(integer2 + " ");
		}
		System.out.println();
		//返回集合中的一部分数据,返回的集合数据是当第二个参数为true时,大于或者等于第一个参数的值
		NavigableSet<Integer> num2 = treeSet.tailSet(3,true);
		for (Integer integer2 : num2) {
			System.out.print(integer2 + " ");
		}
		System.out.println();
		//返回集合中的一部分数据,开始元素是第一个参数,结束元素是第二个参数。
		//结果是包含开始元素,不包含结束元素
		SortedSet<Integer> sort = treeSet.subSet(2, 4);
		for(Integer nuInteger:sort){
			System.out.print(nuInteger + "  ");
		}
		System.out.println();
		//返回的结果集是完全小于指定元素的集合中的元素
		SortedSet<Integer> rSet = treeSet.headSet(4);
		for(Integer in:rSet){
			System.out.print(in + " ");
		}
		System.out.println();
		//返回集合中的子集,子集的元素是大于或者等于指定元素的值
		SortedSet<Integer> integers = treeSet.tailSet(3);
		for(Integer s:integers){
			System.out.print(s +  "	");
		}
		//返回用于在此集合中排序元素的比较器,如果该集合使用元素的自然排序,则返回null
		Comparator<? super Integer>  c = treeSet.comparator();
		System.out.println(c);
		//返回该集合中元素最小的一个
		Integer first = treeSet.first();
		System.out.println("集合中的最小值是 : " + first);
		//返回集合中元素最大的一个
		Integer last = treeSet.last();
		System.out.println("集合中的最大值是: " + last);
		//返回这个集合中最大的元素小于或等于给定元素,如果没有这样的元素,则返回null。
		Integer sInteger =treeSet.floor(4);
		System.out.println("小于或者等于指定元素的最大值是 : " + sInteger);
		//返回这个集合中最小元素大于或等于给定元素,如果没有这样的元素,则返回null
		Integer rInteger = treeSet.ceiling(5);
		System.out.println("大于或者等于指定元素的最小值是 : " + rInteger);
		//返回集合中完全大于指定元素的最小的元素,如果不存在这样的元素,则返回null
		Integer zd = treeSet.higher(3);
		System.out.println("大于指定元素的值是 : " + zd);
		//返回这个集合中最大的元素,严格小于给定的元素,如果没有这样的元素,则返回null
		Integer max = treeSet.lower(4);
		System.out.println("严格小于给定的元素的元素是 : " +max);
		//检索并删除第一个(最低)元素,或者如果这个集是空的,则返回null
		Integer pollFirst = treeSet.pollFirst();
		System.out.println("最低的元素是 : " + pollFirst);
		//检索并删除最后一个(最高)元素,或者如果这个集是空的,则返回null
		Integer pollLast = treeSet.pollLast();
		System.out.println("最高的元素是 : " + pollLast);
		
	}
}

这里写图片描述

在这里插入图片描述


http://www.niftyadmin.cn/n/749504.html

相关文章

html两行溢出省略号,html – 两行上的文本溢出省略号

我不知道如果你已经看到THIS&#xff0c;但克里斯Coyier的出色的CSS-Tricks.com发布了一个链接到这一段时间&#xff0c;它是一个纯CSS解决方案&#xff0c;完成你所寻求的。HTML&#xff1a;Call me Ishmael. Some years ago – never mind how long precisely – havinglittl…

API学习HashMap

package com.wonders.week01.collection;import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.Map.Entry;/*** JDK1.7* HashMap* (1)继承了AbstractMap类&#xff0c;实现了Map…

html5群组选择器,HTML5(H5)CSS选择器

css选择器使用css选择器基本流程&#xff1a;1.制作所需的选择器&#xff0c;并在其中写入样式2.将选择器绑定到指定的html标签上标签选择器&#xff1a;用标签名来定义作用&#xff1a;当前页面中&#xff0c;所有叫这个名字的标签&#xff0c;全部都绑定上样式代码示例&#…

Kafka Eagle安装详情及问题解答

1.概述 比奇小说网 www.biqi.org 最近有很多同学给笔者留言&#xff0c;说在安装Kafka Eagle的时候&#xff0c;会遇到一些问题&#xff0c;请教如何解决&#xff1f;今天笔者就在这里总结一下安装步骤&#xff0c;和一些安装的注意事项&#xff0c;以及解决方式。 2.内容 在…

html5页面教程,HTML 教程

html>我的第一个标题我的第一个段落。HTML 简介HTML文件是由HTML命令组成的描述性文本&#xff0c;HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML文件的结构包括头部(Head)、主体(Body)两大部分&#xff0c;其中头部描述浏览器所需的信息&#xff0c;而主体则…

一键自动生成 java junit 测试代码神器 gen-test-plugin 入门介绍

gen-test-plugin 纯爱小说 https://www.shupu.org/ 我们日常编写代码的过程中&#xff0c;经常需要为代码编写测试案例。 随着对代码质量的要求越来越高&#xff0c;很多公司开始通过代码的测试覆盖率作为 QA 的一个评定指标。 本框架可以一键生成所有代码对应的 junit 测试…

API学习LinkedHashMap

package com.wonders.week01.collection;import java.util.LinkedHashMap;/*** JDK1.7* LinkedHashMap* (1)继承了HashMap&#xff0c;实现了Map接口* (2)与HashMap的不同在于&#xff0c;LinkedHashMap包含了一个双链表。* (3)是一个非线程安全的集合类* author liyongyong**/…

网络拾遗

网络拾遗 比奇中文网 https://www.biqi.org/ Part.1 - HTTP 协议 1. HTTP 特性 HTTP 协议构建于 TCP/IP 协议之上&#xff0c;是一个应用层协议&#xff0c;默认端口号是 80。HTTP 是无连接无状态的。 2. HTTP 报文 HTTP 协议是以 ASCII 码进行传输的&#xff0c;建立在 TCP…