`

Java中hashSet和treeSet集合

    博客分类:
  • Java
阅读更多
1. Java中hashSet集合

HashSet的add()方法返回ture添加成功,返回false添加失败。HashSet是没有顺序的。
public class SetTest1 {
    public static void main(String[] args){
        HashSet set = new HashSet();
        System.out.println(set.add("a"));
        set.add("b");
        set.add("c");
        set.add("d");
        System.out.println(set.add("a"));
        System.out.println(set);
    }
}
运行结果:
true
false
[d, b, c, a]

set集合不会存储重复的元素,具体是比较两个引用调用hashCode方法得到的结果是否相同!
import java.util.HashSet;
public class SetTest2{
    public static void main(String[] args){
        HashSet set = new HashSet();    
        String s1 = new String("a");
        String s2 = new String("a");
        System.out.println("hash code: " + (s1.hashCode() == s2.hashCode()));
        set.add(s1);
        set.add(s2);
        System.out.println(set);
    }
}
运行结果:
hash code: true
[a]

set集合增加时候的步骤:
1) 当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hashcode值是否与增加的对象的hashcode值一致;
2) 如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。


2. Java中treeSet集合

Collections的reverseOrder()方法是自然顺序的反序的排序,sort()方法是对指定集合的排序。
Collections的shuffle()方法是随机排序。
Collections的max()和min()方法。

1. 元素自身具备比较性,需要元素实现Comparable接口,重写compareTo方法。叫做元素的自然排序(默认排序)。
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetTest2{
    public static void main(String[] args){
        TreeSet set = new TreeSet(new PersonComparator());
        Person p1 = new Person(10);
        Person p2 = new Person(20);
        Person p3 = new Person(30);
        Person p4 = new Person(40);
        set.add(p1);
        set.add(p2);
        set.add(p3);
        set.add(p4);
        for(Iterator iter = set.iterator(); iter.hasNext();){
            Person p = (Person)iter.next();
            System.out.println(p.score);
        }
    }
}
class Person{
    int score;
    public Person(int score){
        this.score = score;
    }
    public String toString(){
        return String.valueOf(this.score);
    }
}
class PersonComparator implements Comparator{
    public int compare(Object arg0, Object arg1){
        Person p1 = (Person) arg0;
        Person p2 = (Person) arg1;
        return p2.score - p1.score;
    }
}
运行结果:
40
30
20
10

2. 元素自身不具备比较性,或者具备的比较性不是所需要的,需要定义一个类实现接口Comparator,重写compare方法,并将该接口的子类实例对象作为参数传递给TreeMap集合的构造方法。
   当Comparable比较方式和Comparator比较方式同时存在时,以Comparator的比较方式为主。
import java.util.Comparator;
import java.util.Iterator;
import java.util.TreeSet;
public class TreeSetTest3{
    public static void main(String[] args){
        TreeSet set = new TreeSet(new MyComparator());
        set.add("C");
        set.add("A");
        set.add("B");
        set.add("E");
        set.add("a");
        set.add("F");
        set.add("D");
        for(Iterator iter = set.iterator(); iter.hasNext();){
            String value = (String)iter.next();
            System.out.println(value);
        }
    }
}
class MyComparator implements Comparator{
    public int compare(Object arg0, Object arg1){
        String s1 = (String)arg0;
        String s2 = (String)arg1;
        return s2.compareTo(s1);
    }
}
运行结果:
a
F
E
D
C
B
A


推荐博客:https://blog.csdn.net/qq_33642117/article/details/52040345
分享到:
评论

相关推荐

    详解Java中HashSet和TreeSet的区别

    当向 HashSet 集合中存入一个元素时,HashSet 会调用该对象的 hashCode() 方法来得到该对象的 hashCode 值,然后根据 hashCode 值来决定该对象在 HashSet 中的存储位置。简单地说,HashSet 集合判断两个元素相等的...

    排序之HashSet和TreeSet的区别

    在Java编程语言中,集合框架是处理数据的重要组成部分,其中`HashSet`和`TreeSet`是两种常用的Set接口实现类。它们各自具有独特的特性和用途,理解它们的区别对于编写高效且正确的代码至关重要。 首先,`HashSet`是...

    HashSet和TreeSet_围墙之外

    HashSet和TreeSet是Java集合框架中的两种重要数据结构,它们都是Set接口的实现类,用于存储不重复的元素。在编程实践中,理解它们的区别和应用场景至关重要。 HashSet是基于HashMap实现的,它不保证元素的顺序,...

    HashSet和TreeSet.doc

    HashSet 和 TreeSet 是 Java 中两种常用的 Set 集合实现,它们都继承自 Set 接口,但实现方式和特性上存在显著差异。 首先,HashSet 是基于哈希表(HashMap 实例)来存储元素的,因此它提供了快速的插入、删除和...

    HashSet和TreeSet使用方法的区别解析

    HashSet和TreeSet都是Java集合框架中的Set接口实现,用于存储不重复的元素。但是,它们在使用方法和实现机理上有很大的区别。 首先,从使用方法上讲,HashSet和TreeSet都可以用于存储不重复的元素,但是它们在元素...

    day18-集合-中(HashSet&TreeSet&比较器).zip

    在Java编程语言中,集合框架是处理对象组的重要工具,其中`HashSet`和`TreeSet`是两种常见的接口实现类,分别提供了不同的功能和性能特性。本教程将深入探讨这两个集合类以及它们与比较器(Comparator)的关系。 ...

    HashSet,TreeSet和LinkedHashSet的区别1

    这意味着在遍历LinkedHashSet时,元素会被按照添加到集合中的顺序访问,这在需要保持元素插入顺序的情况下非常有用。尽管如此,插入性能略低于HashSet,但在迭代访问时,其性能优于HashSet。 最后,TreeSet是...

    java HashSet 集合排序

    java HashSet 集合排序,需要通过利用TreeSet集合排序。2013-10-30。

    java 集合框架(TreeSet练习)

    4. **迭代器**:`TreeSet`遵循Java集合框架的迭代规则,我们可以使用`iterator()`获取一个迭代器,然后通过`hasNext()`和`next()`来遍历并访问集合中的元素。 5. **遍历`TreeSet`**:由于`TreeSet`是有序的,我们...

    List 去重的6种方法(contains、迭代、hashSet、treeSet、linkedHashSet、stream)

    此方法的实现代码较为简洁,但缺点是 HashSet 会自动排序,这样新集合的数据排序就和原集合不一致了 4:TreeSet去重(无序) 比较遗憾的是,TreeSet 虽然实现起来也比较简单,但它有着和 HashSet 一样的问题,会自动...

    treemap treeset hashset hashmap 简要介绍

    在Java编程语言中,集合框架提供了多种数据结构来存储和操作数据,其中`TreeMap`、`TreeSet`、`HashSet`以及`HashMap`是最常用的数据结构之一。这些集合类各自有着独特的特性和应用场景,下面将对它们进行详细介绍。...

    Java数据结构--13.Java8数据结构TreeSet.pdf

    在Java集合框架中,TreeSet是一个重要的数据结构,它是Set接口的实现类之一,与HashSet和LinkedHashSet不同,TreeSet具有排序功能,这是因为其不仅继承自AbstractSet,还实现了SortedSet和NavigableSet接口。...

    java集合使用实例

    本资源聚焦于Java集合中的四个关键类:HashSet、TreeSet、HashMap和TreeMap,它们分别代表了不同类型的集合容器。 1. **HashSet**:HashSet是一个不允许重复元素的无序集合。它基于哈希表实现,插入和查找操作的...

    对于java集合类的一个简单介绍

    List和Set都可以返回Iterator对象,Iterator可以用来遍历集合中的元素。 Collection接口 Collection接口是Java集合类中最高级的接口,提供了基本的添加、删除、检查元素是否存在的方法。List和Set都是Collection...

    java编程基础笔记(集合)

    Java编程基础笔记主要聚焦在集合框架上,这是Java编程中不可或缺的部分。集合框架是Java提供的一组接口和类,用于存储和操作...在实际的学习过程中,结合这些图片和文字笔记,可以加深对Java集合的理解,提升编程能力。

    java泛型集合 java集合 集合 java Collection

    Java 泛型集合和Java集合框架是Java编程中不可或缺的部分,它们为开发者提供了高效的数据存储和操作机制。本文将深入探讨这两个主题,并着重讲解`Collection`接口及其在Java中的应用。 首先,Java泛型是一种在编译...

    Java 集合与数组

    ArrayList、HashSet 和 TreeSet 是 Java 中常用的集合实现类。ArrayList 是一个动态数组,HashSet 是一个不允许重复元素的集合,TreeSet 是一个有序的集合。 数组 数组是一种基本的数据结构,用于存储一组相同类型...

    学士后Java集合框架和泛型课后习题答案

    泛型可以限制集合中元素的类型,防止不兼容类型的数据存入,提高编译时的类型检查。 5. **泛型通配符**:?通配符用于表示任意类型。例如,`List<?> list = new ArrayList();` 这里的?表示list可以接受任何类型的...

    【Java面试+Java学习指南】 一份涵盖大部分Java程序员所需要掌握的核心知识

    ava基础 基础知识 面向对象基础 Java基本数据类型 string和包装类 final关键字特性 Java类和包 抽象类和接口 ...Java集合详解7:HashSet,TreeSet与LinkedHashSet Java集合详解8:Java集合类细节精讲 JavaWeb

    java 中HashMap、HashSet、TreeMap、TreeSet判断元素相同的几种方法比较

    在Java编程中,HashMap、HashSet、TreeMap和TreeSet是四种常见的集合类,它们各自有特定的用途和内部实现机制。这些数据结构用于存储和管理数据,其中HashMap和HashSet是基于哈希表实现的,而TreeMap和TreeSet则是...

Global site tag (gtag.js) - Google Analytics