美文网首页
Java基础—set集合

Java基础—set集合

作者: 芽冰 | 来源:发表于2017-08-30 18:27 被阅读0次

Set集合

    Set集合中元素是无序的,不可以重复,在Set集合中存储的对象,不存在两个对象equals比较为true的情况。

    1)HashSet和TreeSet是Set集合中的两个实现类,分别用hash表和二叉树的方式实现Set集合,HashSet是通过散列集合实现Set的。

    2)Set集合中没有get(int index)方法,不能像在List集合中,通过下标去得到对应的元素。如果想要的到元素,则使用Iterator迭代器。

3)向Set集合中添加元素 可以使用add()方法,但是增加的元素不会再集合末尾添加,因为Set集合中元素是无序的。

Set<String> set = new HashSet<String>() ;    //多态
set.add("a");
set.add("b");
set.add("c");
//普通循环,使用Iteraotr迭代器迭代
Iterator it = (String)set.iterator() ;
while(it.hasNext()){
    String str = (String)it.next() ;
    System.out.println(str) ;
}
//增强for循环遍历Set集合
for(String str:set){
    System.out.println(str) ;
}

 4)hashCode对HashSet的影响。如果我们不重写hashCode,那么我们使用的就是Object提供的,而该方法是返回地址。也就是不同的对象,hashCode不同。

    5)对于重写了equals方法的对象,强烈要求重写继承自Object类的hashCode方法,因为是否重写hashCode方法对操作集合有影响。

    6)重写hashCode需要注意两点:

        ①与equals方法的一致性,通过equals方法比较返回为true的对象,其hashCode的方法返回的对象一致。

        ②hashCode方法返回的值应该符合hash算法要求。

    7)boolean contains(Object obj)方法:查看对象是否存在Set集合中。

Set<Point> set = new HashPoint<Point>() ;
//Point point = new Point(1,2) ;    set.add(point) ;
set.add(new Point(1,2));
set.add(new Point(3,4));
System.out.println(set.contains(new Point(1,2)));

    8)

Set<Point> set= new HashSet<Point>() ;
Point p1 = new Point(1,2);
Point p2 = new Point(3,4);
System.out.println("两个对象是否是一个对象"+(p1==p2));
System.out.println("两个对象内容是否相同"+(p1.equals(p2)));
System.out.println("两个对象hashCode是否相同"+(p1.hashCode()==p2.hashCode()));
    set.add(p1);
    set.add(p2);
   System.out.println("hashSet集合中元素个数"+set.size()) ;
   for(Point p:set){
       System.out.println(p) ;
   }

    9)Set集合中保存不同对象时,不会保存既hashCode()相同又equals相同的对象,缺一不可,否则HashSet不认为他们是重复的值。

Set<Point> set = new HashPoint<Point>() ;

相关文章

  • 培训文档

    java基础 集合List:ArrayList,LinkedListSet:HashSet,Li...

  • Java集合--Set(基础)

    1.Set 上一篇,我们介绍Java中的List集合。本篇,让我们继续学习,来了解下Set集合; Set继承于Co...

  • Java基础—set集合

    Set集合 Set集合中元素是无序的,不可以重复,在Set集合中存储的对象,不存在两个对象equals比较为tru...

  • Android面试复习笔记 6

    11.Java基础 1. 集合 List,Set,Queue和Map。List,Set,Queue都是接口,他们都...

  • Set——你真的了解吗?

    JAVA 基础 :Set——你真的了解吗? 简述 Set 继承于 Collection ,是一种集合。有元素无序、...

  • 聊聊Java中的Set -《Java语言程序设计进阶篇》读书笔

    Set是java集合框架中集合的一种。 java集合包括List,Set还有Queue。我们今天的主角就是Set。...

  • 集合的一些源码分析

    java基础 hashmap原理 Java集合说一说吧set ,list,map都问了一遍 java中util包下...

  • 集合(二)~Set

    一、Set集合概述和特点 1. Set集合概述和特点 java.util.Set 接口和 java.util.Li...

  • Java集合类初探

    参考原文 一 java集合类简介 1、java集合大致可以分为Set、List、Queue、Map四类。 Set:...

  • java常用方法

    java集合的方法:①Set set = new HashSet<>();②set.cont...

网友评论

      本文标题:Java基础—set集合

      本文链接:https://www.haomeiwen.com/subject/gavzdxtx.html