博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java Set接口
阅读量:3960 次
发布时间:2019-05-24

本文共 2012 字,大约阅读时间需要 6 分钟。

Set接口是Collection接口的子接口,但是与Collection和List接口不同的是,Set接口中不能加入重复的元素。Set接口的定义如下:

public interface Set
extends Collection
  • 从定义上看,Set接口与List接口的定义并没有太大区别。但是Set接口的主要方法与Collection是一致的,Set接口并没有对Collection接口进行扩充,只是比Collection接口的要求更严格,不能增加重复元素。
  • Set接口的实例无法像List接口那样可以进行双向输出,因为接口没有提供List接口中定义的get(int index)方法。
  • Set接口的实现类主要有:HashSetTreeSetLinkedHashSet等。这些实现类的共同点就是每个相同的项只能保存一份。

HashSet采用复杂的散列存储方式存储元素,所以元素没有顺序。使用HashSet能够最快地获取集合中的元素,效率非常高。HashSet可根据 hashCode和 equals 的值判断两个对象是否是同一个对象,如果 hashCode 相等,并且 equals 返回 true,则这两个对象是同一个对象。

import java.util.HashSet;public class Main {
public static void main(String[] args) {
HashSet
students = new HashSet
(); students.add(new Student("张", "三")); students.add(new Student("李", "四")); students.add(new Student("王", "五")); students.add(new Student("赵", "六")); students.add(new Student("张", "四")); students.add(new Student("王", "六")); students.add(new Student("赵", "七")); students.add(new Student("张", "三")); students.add(new Student("李", "四")); students.add(new Student("赵", "八")); System.out.println(students); }}public class Student {
private String first; private String last; public Student(String first, String last) {
this.first = first; this.last = last; } @Override public boolean equals(Object o) {
if (this == o) return true; if (o.getClass() == Student.class){
Student student = (Student) o; return student.last.equals(last); } return false; } @Override public int hashCode() {
return last.hashCode(); } @Override public String toString() {
return "Student{" + "first='" + first + '\'' + ", last='" + last + '\'' + '}'; }}

运行结果:

在这里插入图片描述

注意:上述程序中如果没有hashCode()方法,则输出结果会不同。HashSet根据hashCode和equals的值判断两个对象是否是同一个对象,如果不重载hashCode()方法,则默认情况下不同对象的 hashcode 很可能是不一样的。

转载地址:http://obqzi.baihongyu.com/

你可能感兴趣的文章
网上看到的:ARM入门最好的文章(转)
查看>>
中国最美情诗100句
查看>>
javascript注册window的onload事件问题研究
查看>>
客户端技术分页控件javascript+css,可用于任何服务器端技术
查看>>
学习Swing 的网站[转]
查看>>
Google App engine 的第一个应用 midispot
查看>>
提问的智慧
查看>>
关于dom4j无法解析xmlns问题及生成非UTF-8字符集乱码问题的解决
查看>>
很好的一篇文章 如果让我重做一次研究生 王汎森
查看>>
保护U盘批处理文件
查看>>
hibernate 自动导入sql 文件import.sql 国际化编码的问题的解决方案
查看>>
第七颗头骨 & 忘魂花 凤凰
查看>>
李小龙哲学之言
查看>>
[心情] 如果有一天
查看>>
[Linux] 常用 linux 系统命令及维护备忘
查看>>
[Linux] 关于 Ext4 HowTo
查看>>
[杂记] 新年物语&关于Mysql引擎性能测试
查看>>
[心得] 近期更新&关于Infobright
查看>>
[杂记] 流量统计 & 短信接口
查看>>
[中间件] 消息处理利器 ActiveMQ 的介绍 & Stomp 协议的使用
查看>>