浅析Java中的set集合类型及其接口的用法

 更新时间:2016年05月21日 09:00:59   转载 作者:kuiwu-wang  
Java本身对set集合提供了一个接口,一般的实现类是HastSet和 TreeSet,这里我们先来简要浅析Java中的set集合类型及其接口的用法:

概念
首先,我们看看Set集合。

201652185907060.jpg (583×388)

(01) Set 是继承于Collection的接口。它是一个不允许有重复元素的集合。
(02) AbstractSet 是一个抽象类,它继承于AbstractCollection,AbstractCollection实现了Set中的绝大部分函数,为Set的实现类提供了便利。
(03) HastSet 和 TreeSet 是Set的两个实现类。
    HashSet依赖于HashMap,它实际上是通过HashMap实现的。HashSet中的元素是无序的。
    TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。TreeSet中的元素是有序的。

eg:
下面我们以遍历违例来看看set集合的利用:

package com.sort; 
 
import java.util.HashSet; 
import java.util.Iterator; 
import java.util.Set; 
 
/** 
 * 一个不包含重复元素的 collection。更确切地讲,set 不包含满足 e1.equals(e2) 的元素对 e1 和 e2, 
 * @author Owner 
 * 
 */ 
public class SetTest2 { 
 
 public static void main(String[] args) { 
  Set<String> set = new HashSet<String>(); 
   
  set.add("a"); 
  set.add("b"); 
  set.add("c"); 
  set.add("d"); 
  set.add("e"); 
   
  set.add("e");//不能放入重复数据 
   
  /** 
   * 遍历方法一,迭代遍历 
   */ 
  for(Iterator<String> iterator = set.iterator();iterator.hasNext();){ 
   System.out.print(iterator.next()+" "); 
  } 
   
  System.out.println(); 
  System.out.println("********************"); 
   
  /** 
   * for增强循环遍历 
   */ 
  for(String value : set){ 
   System.out.print(value+" "); 
  } 
 } 
} 

注意:这里Set集合中放入的是String类型,假如我们放入一个自己定义的类实例的时候,比如Person类实例,这时候我们要自己重新hashcode和equal方法,用自己的关键字段来重写,因为当使用HashSet时,hashCode()方法就会得到调用,判断已经存储在集合中的对象的hash code值是否与增加的对象的hash code值一致;如果不一致,直接加进去;如果一致,再进行equals方法的比较,equals方法如果返回true,表示对象已经加进去了,就不会再增加新的对象,否则加进去。

相关文章

  • Java编程实现邻接矩阵表示稠密图代码示例

    Java编程实现邻接矩阵表示稠密图代码示例

    这篇文章主要介绍了Java编程实现邻接矩阵表示稠密图代码示例,具有一定参考价值,需要的朋友可以了解下。
    2017-11-11
  • Spring MVC学习笔记之json格式的输入和输出

    Spring MVC学习笔记之json格式的输入和输出

    本篇文章主要介绍了Spring MVC学习笔记之json格式的输入和输出,这里整理了详细的代码,有需要的小伙伴可以参考下。
    2017-03-03
  • SpringBoot使用WebSocket的方法实例详解

    SpringBoot使用WebSocket的方法实例详解

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。这篇文章主要介绍了SpringBoot使用WebSocket,需要的朋友可以参考下
    2019-06-06
  • SpringBoot深入理解之内置web容器及配置的总结

    SpringBoot深入理解之内置web容器及配置的总结

    今天小编就为大家分享一篇关于SpringBoot深入理解之内置web容器及配置的总结,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • JAVA-4NIO之Channel之间的数据传输方法

    JAVA-4NIO之Channel之间的数据传输方法

    下面小编就为大家带来一篇JAVA-4NIO之Channel之间的数据传输方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • android中判断服务或者进程是否存在实例

    android中判断服务或者进程是否存在实例

    本篇文章主要介绍了android中判断服务或者进程是否存在实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • 简单了解spring bean的循环引用

    简单了解spring bean的循环引用

    这篇文章主要介绍了简单了解spring bean的循环引用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Java8新的异步编程方式CompletableFuture实现

    Java8新的异步编程方式CompletableFuture实现

    这篇文章主要介绍了Java8新的异步编程方式CompletableFuture实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-04-04
  • Java批量从svn导出多个项目代码实例

    Java批量从svn导出多个项目代码实例

    这篇文章主要介绍了java批量从svn导出多个项目代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • Java微信跳一跳操作指南

    Java微信跳一跳操作指南

    这篇文章主要为大家详细介绍了Java微信跳一跳操作指南,通过adb来控制手机进行操作,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-01-01

最新评论