java中 set集合_第8篇 Java中的集合(Set)

Java 集合的 Set 接口

Set类型与List类型的区别

Set: 无序、不可重复

List: 有序、可重复

1、HashSet

HashSet的存储结构:HashMap

特点:

HashSet通过比较存放的哈希码(hashCode)来确定对象存放的位置

当两个对象的哈希值相等时,HashSet通过对象的equals方法来判断两个对象是否相同,如果相同则丢弃该对象

由于判断元素是否存在的依据是hashCode和equals方法,所以我们在使用时通常重写类的这两个方法,来达到自定义对象比较规则的目的。

该比较只实现判断两个对象是否相同,从而达到存放不重复的效果,并无排序功能。

重写hashCode()和equals(Object obj)方法实现对象比较

/*** 重写hashCode方法*/@Overridepublic inthashCode() {returnID;

}/*** 重写equals方法,必须在执行hashCode方法得到相同哈希值之后才进入该方法*/@Overridepublic booleanequals(Object obj) {if (this ==obj)return true;if (obj == null)return false;if (getClass() !=obj.getClass())return false;

Student other=(Student) obj;if (ID !=other.ID)return false;return true;

}

习题:已知ArrayList集合s1, 现要实现将s1中重复的元素移除

方法1:

HashSet s2 = new HashSet(s1);

方法2:

HashSet s2 = new HashSet();

s2.addAll(s1);

方法3:

HashSet s2 = new HashSet();for(String string : s1) {

s2.add(string);

}

2、TreeSet

TreeSet使用元素的自然顺序对元素进行排序,或者根据创建set时提供的Comparator进行排序。

构造方法

构造一个包含指定 collection 元素的新 TreeSet,它按照其元素的自然顺序进行排序。

Comparator super E> comparator)

构造一个新的空 TreeSet,它根据指定比较器进行排序。该比较器为实现了Comparator接口的类的实体对象。

自然顺序的规则

TreeSet使用的元素的自然顺序由元素自己提供比较规则。

通常这个比较规则有两种实现方法:

元素对象实现Comparable接口,并实现接口的CompareTo方法

TreeSet在实例化的时候传入一个该元素对象的比较器,该比较器实现了Comparator接口,并实现接口的compare方法

实现Comparable接口:

public class Student implements Comparable{

.../*** 重写Comparable接口的compareTo方法,将o的name属性与本对象的name属性对比*/@Overridepublic intcompareTo(Student o) {returnname.compareTo(o.name);

}

传入比较器:

比较器类

public class MyComparator implements Comparator{

@Overridepublic intcompare(Student o1, Student o2) {return o1.getAge() -o2.getAge();

}

}

构造方法

HashSet stuList = new HashSet(new MyComparator());

练习:使用TreeSet对存储字符串并根据字符串长度排序

代码实现:

public static voidmain(String[] args) {//实例化TreeSet,并通过匿名类传入比较器

TreeSet tSet = new TreeSet(new Comparator() {

@Overridepublic intcompare(String o1, String o2) {return o2.length() -o1.length();

}

}

);

tSet.add("asd");

tSet.add("asd1");

tSet.add("asd111");

tSet.add("asd11");

System.out.println(tSet);

}

打印结果:

[asd111, asd11, asd1, asd]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/530289.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android mysql实现登录注册_android简单登陆和注册功能实现+SQLite数据库学习

android简单登陆和注册功能实现SQLite数据库学习发布时间&#xff1a;2018-07-04 17:23,浏览次数&#xff1a;1027, 标签&#xff1a;androidSQLite这里我只是建立了一个用简单的存储用户名和密码的表单MyDBHelper.java<>public class MyDBHelper extends SQLiteOpenHelp…

java web 来源页_Java:Java Web--分页效果

先来看一看分页的实现原理万能公式.jpg项目目录.PNG首先,新建Java Web项目一. 梳理业务逻辑重定向到URL(跳转到StudentViewAction页面)//index.jsp页面1.从页面接收可变的值2.接收值有问题时,初始化为13.如果没有问题,把String类型接收值强转成Integer4.实例DAO方法,调用findSt…

java 浏览器 安全_安全策略-IE浏览器防黑十大秘籍

1.管理好Cookie在IE6.0中&#xff0c;打开“工具”→“Internet选项”→“隐私”对话框&#xff0c;这里设定了“阻止所有Cookie”、“高”、“中高”、“中”、“低”、“接受所有Cookie”六个级别&#xff0c;你只要拖动滑块就可以方便地进行设定&#xff0c;而点击下方的“编…

什么是java中的枚举法_enum枚举javajava,enum枚举使用详解+,总结

enum 的全称为 enumeration&#xff0c; 是 JDK 1.5 中引入的新特性&#xff0c;存放在 java.lang 包中。下面是我在使用 enum 过程中的一些经验和总结。原始的接口定义常量语法(定义)创建枚举类型要使用 enum 关键字&#xff0c;隐含了所创建的类型都是 java.lang.Enum 类的子…

java 审计 漏洞函数_Java Web代码审计流程与漏洞函数

常见框架与组合常见框架Struts2SpringMVCSpring Boot框架执行流程View层&#xff1a;视图层Controller层&#xff1a;表现层Service层&#xff1a;业务层Dom层&#xff1a;持久层常见组合SpringStruts2HibernateSpringSpringMVCMybatisSpring BootMybatis代码审计方法根据业务功…

java前期_【JAVA】前期环境配置

一、java的环境配置及在eclipse中如何安装JRE或JDK环境eclipse下载地址&#xff1a;JDK下载地址&#xff1a;1)安装JDK或JRE注&#xff1a;JDK使用与开发者运用&#xff0c;其中包含了开发环境和运行环境。而JRE只包含了java的运行环境。2)配置设置执行路径UNiX&#xff1a;在C…

php截取指定字符串之后,php截取字符串(截取指定字符串之间的字符串)

一、PHP截取两个指定字符后边的字符$a "123abc#456";$b (strpos($a,""));$c (strpos($a,"#"));echo substr($a,$b1,$c-1);二、常用截取字符串技巧。//构造字符串$str "ABCDEFGHIJKLMNOPQRSTUVWXYZ";echo "原字符串&#xff1a;…

php 日志按天截取,Laravel 日志管理:按日期切割日志

日志存储Laravel 默认的错误文件记录在一个文件里&#xff0c;随着时间的推移&#xff0c;此文件将会变得巨大&#xff0c;不方便查阅。我们可以通过修改 config/app.php 配置文件中的 log 选项来配置 Laravel 使用的存储机制。如果你希望每天产生日志都存放在不同的文件中&…

php xcache 方法,php xcache 解密

NO.2 /index.php?actionmd5webcrack 很强大,需要登陆论坛才能解密,点击右上角的“register”进行注册,都是一些简单的单词,应该能看懂吧?...() A.PHP B.JSP D.Ajax 4.配置 ...假设$aarray(‘x’,’y’);,则$aarray_pad...xcache 15 四个模块 Admin Common Member Article 用户…

ecshop category.php?id=4,categoryall.php

//by 琅琊源码 QQ:27392236define(IN_ECS, true);require dirname(__FILE__) . /includes/init.php;if ((DEBUG_MODE & 2) ! 2) {$smarty->caching true;}require ROOT_PATH . /includes/lib_area.php;$area_info get_area_info($province_id);$area_id $area_info[r…

php 获取key的位置,PHP获取当前所在目录位置的方法

本文实例讲述了PHP获取当前所在目录位置的方法。分享给大家供大家参考。具体分析如下&#xff1a;如果要获取脚本文件的目录&#xff0c;要应用函数getcwd()来实现。函数声明如下&#xff1a;string getcwd ( void ) ;成功执行后返回当前目录字符串&#xff0c;失败返回FALSE。…

java8收集器,Java 8中的收集器collectionAndThen()方法

collectingAndThen()Java Collectors类中的方法使Collector适应于执行其他完成转换。它返回执行下游收集器动作的收集器&#xff0c;然后执行附加的结束步骤。语法如下。static Collector collectingAndThen(Collector downstream, Functionfinisher)在这里&#xff0c;参数T-…

php 精度运算,PHP BC 库(任意精度数字运算) | 网游世界

留意&#xff1a;备选参数$scale以设置运算精度(保留小数位)。bcscale(设置运算精度)bool bcscale ( int $scale )说明&#xff1a;设置运算精度(保留小数位)&#xff0c;成功返回TRUE否则为FALSE。bcadd(加法运算)string bcadd ( string $left_operand , string $right_operan…

php 不允许外部访问,[日常] 解决mysql不允许外部访问

1.在端口已经开放的情况下,ubuntu mysql 3306允许远程访问vim /etc/mysql/mysql.conf.d/mysqld.cnf注释#bind-address 127.0.0.12.给用户授权允许远程访问:grant all privileges on *.* to root"%" identified by "pwd" with grant option;flush privileg…

elementary安装Java,elementary os怎么样安装java

elementary os的安装方法elementary os 的安装镜像文件准备好以后&#xff0c;这里以虚拟机上安装为例&#xff0c;配置好以后启动虚拟机进入安装界面。在初始化安装界面中先选择“中文简体”&#xff0c;再点击“安装elementary os”按钮随后系统会显示硬件安装需求界面&#…

java jni框架,Java JNI 简明教程(一)——传智播客JNI笔记(王泽佑)

package cn.itcast;public calss TestNative {public native void sayHello();public static void main(String[] arg){}}2. 用javah.exe生成包含native方法的C/C头文件javah -jni(默认)javah cn.itcast.TestNative //由类名执行生成C/C头文件生成的头文件内容&#xff1a;JNIE…

java自定义变量解析,Thymeleaf内置对象、定义变量、URL参数及标签自定义属性

如标题所述&#xff0c;这篇文章主要讲述Thymeleaf中的内置对象(list解析、日期格式化、数字格式化等)、定义变量、获取URL的参数和在页面标签中自定义属性的应用。如果对Thymeleaf的基本使用、maven依赖等不清楚的可以先阅读我的另一篇文章《Thymeleaf 之 初步使用》。Control…

linux php curl.so,linux中php如何安装CURL扩展方法

如果php已经在系统编译好&#xff0c;后来又需要添加新的扩展。一种方式就是重新完全编译php&#xff0c;另一种方式就是单独编译扩展库&#xff0c;以extension的形式扩展。下面以安装curl扩展为例&#xff1a;1、下载curl安装包。(我的php是4.4.4的&#xff0c;下载最新的cur…

matlab线性拉伸函数,采用线性变换对图像的每一个像素灰度作线性拉伸-Read.PPT

采用线性变换对图像的每一个像素灰度作线性拉伸-Read第4章 图像增强(1) 4.1 图像增强概述 图像增强(image enhancement)的定义&#xff1a; 在图像的获取过程中&#xff0c;由于多种因素的影响&#xff0c;导致图像质量退化。图像增强是对退化图像的某些特征&#xff0c;如边缘…

php js 循环对象属性,js 遍历对象的属性的代码_javascript技巧

如&#xff1a;Function.prototype.addMethodfunction(methodName,func){if(!this.prototype[methodName]){this.prototype[methodName]func;//给原型增加方法&#xff0c;此方法会影响到该类型的实例上}return this.prototype;//返回原型&#xff0c;此类型实例可以进行链形调…