Java Set,HashSet,TreeSet,LinkedHashSet用法
2021/11/20 17:12:10
本文主要是介绍Java Set,HashSet,TreeSet,LinkedHashSet用法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
package com.asse.ljb; import java.util.HashSet; import java.util.LinkedHashSet; import java.util.Set; import java.util.TreeSet; /** * 1.set集合不允许添加相同的元素 * 2.使用equals(),比较set是否相同 * 3.HashSet 是 Set 接口的典型实现类,大多数时候使用 Set 集合时都使用这个实现类。 * 4.HashSet 按 Hash 算法来存储集合中的元素,因此具有很好的存取和查找性能。 * 5.HashSet 具有以下特点: * 不能保证元素的排列顺序 * HashSet 不是线程安全的 * 集合元素可以使用 null */ public class SetTest { public static void main(String[] args) { System.out.println("------Set用法--------"); Set set = new HashSet(); set.add("abc"); set.add(123); set.add(456); System.out.println("重复加入123:" + set.add(123));//添加重复元素时为false,不能添加 System.out.println("输出所有元素"); for (Object o : set) {//foreach输出所有元素 System.out.println(o); } Set set2 = new HashSet(); set2.add(123); set2.add("abc"); set2.add(456); System.out.println("==方法判断相等是不对的:" + (set == set2));//此方法不对 System.out.println("equals()方法判断set,set2是否相同:" + set.equals(set2));//判断set,set2是否相同 System.out.println("添加null:" + set2.add(null));//集合元素可以null for (Object object : set2) { System.out.println(object); } System.out.println("--------------"); //hashset用法 System.out.println("---hashset用法------------"); HashSet hs = new HashSet(); hs.add(123); hs.add("abc"); System.out.println("hs hashcode:" + hs.hashCode());//哈希码值 HashSet hs2 = new HashSet(); hs2.add(123); hs2.add("abc"); System.out.println("hs2 hashcode:" + hs2.hashCode());//哈希码值 System.out.println("hs.equals(hs2):" + hs.equals(hs2));//两个hashset对象是否相同 System.out.println(); System.out.println("hs add null"); hs.add(null);//hashset可以储存null System.out.println("hs hashcode:" + hs.hashCode()); System.out.println("hs2 hashcode:" + hs2.hashCode()); System.out.println("hs.equals(hs2):" + hs.equals(hs2)); System.out.println("输出hs"); hs.add("cde"); hs.add("123"); for (Object object : hs) { System.out.println(object); } /** * TreeSet用法 * 1.TreeSet 是 SortedSet 接口的实现类,TreeSet 可以确保集合元素处于排序状态。 * 2.按大小排序储存 * 3. */ System.out.println("-------TreeSet用法---------"); TreeSet ts = new TreeSet(); ts.add("abc"); ts.add("cde"); ts.add("efg"); ts.add("aac"); ts.add("xyz"); System.out.println("按大小有顺序输出"); for (Object object : ts) {//输出是有顺序的 System.out.println(object); } System.out.println("输出第一个元素 :" + ts.first()); System.out.println("输出最后一个元素:" + ts.last()); System.out.println("输出比abc大一个的元素:" + ts.lower("abc")); System.out.println("输出比abc小一个的元素:" + ts.higher("abc")); System.out.println("----headSet------"); System.out.println("输出cde的头部(不包括cde)及cde前面的元素"); for (Object object : ts.headSet("cde")) { System.out.println(object); } System.out.println("-------tailSet--------"); System.out.println("输出cde的尾部(包括cde)及cde后面的元素"); for (Object object : ts.tailSet("cde")) { System.out.println(object); } /** * LinkedHashSet用法 * 1. LinkedHashSet 是 HashSet 的子类 * 2.LinkedHashSet 集合根据元素的 hashCode 值来决定元素的存储位置 * 但它同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。 * 3. LinkedHashSet 性能插入性能略低于 HashSet * 但在迭代访问 Set 里的全部元素时有很好的性能。 * 4.LinkedHashSet 不允许集合元素重复。 */ System.out.println("-------LinkedHashSet用法------------"); LinkedHashSet lhs = new LinkedHashSet(); lhs.add("abc"); lhs.add("123"); lhs.add("cde"); System.out.println("按插入的顺序输出"); for (Object object : lhs) {//输出顺序是插入顺序 System.out.println(object); } System.out.println("再次添加123:" + lhs.add("123")); LinkedHashSet<Car> lhsEmp = new LinkedHashSet<Car>(); lhsEmp.add(new Car("stn")); lhsEmp.add(new Car("dz")); lhsEmp.add(new Car("lsls")); } } class Car{ String name; public Car(String name) { this.name = name; } }
这篇关于Java Set,HashSet,TreeSet,LinkedHashSet用法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略