java使用hashset_Java集合(二)HashSet的使用
HashSet和TreeSet都实现了Collection下的Set接口,他们实现的原理分别是HashMap和TreeMap,基本的数据结构是哈希表和Red-Black Tree
package com.pason.hashset;
import java.util.HashSet;
import java.util.Iterator;
public class HashSetDemo {
public static void main(String[] args) {
HashSet student = new HashSet();
Student stu1 = new Student("Pason",123);
Student stu2 = new Student("Wade",456);
Student stu3 = new Student("Lee",789);
Student stu4 = new Student("Wong",123);
student.add(stu1);
student.add(stu2);
student.add(stu3);
student.add(stu4);
System.out.println(student.size());
//打印的都是Student对象的toString()方法
System.out.println("======================");
//forEach方法遍历
for (Student s: student)
System.out.println(s);
System.out.println("======================");
//直接打印hashSet对象
System.out.println(student);
System.out.println("======================");
//迭代器
Iterator stu = student.iterator();
while(stu.hasNext()){
System.out.println(stu.next());
}
System.out.println("======================");
//加入重复元素发现对象加不进去
student.add(stu3);
System.out.println(student);
//如何定义对象是否重复呢?
//需要重写equals()和hashCode()方法,一般在Eclipse中
//自动根据类中字段属性重写
//现在重写Student中的equals()和hashCode()方法
//仅根据id判断是否一致,这样stu4因为与stu1的id一致,所以只加入了3个
//如果修改某个hashset中元素的能够决定hashcode和equals()的因素,那么修改后该元素无法移除
//原因和HashMap有关
stu3.setId(111);
student.remove(stu3);
System.out.println("======================");
System.out.println(student);
System.out.println("发现无法移除,但该改变可见!");
}
}
package com.pason.hashset;
public class Student {
private String name;
private int id;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String toString() {
return "Student [name=" + name + ", id=" + id + "]";
}
public Student(String name, int id) {
super();
this.name = name;
this.id = id;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + id;
return result;
}
@Override
public boolean equals(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;
}
}
java使用hashset_Java集合(二)HashSet的使用相关推荐
- java中 hashset_Java中的HashSet
HashSet扩展AbstractSet并实现Set接口.它创建一个使用哈希表进行存储的集合. 哈希表通过使用称为哈希的机制来存储信息.在散列中,键的信息内容用于确定唯一值,称为其散列码. 然后,将哈 ...
- 常见的数据结构:栈 队列 数组 链表 红黑树——List集合 _ HashSet集合、可变参数 collections集合 Map集合
2021-06-07复习java 一.常见的数据结构 栈(先进后出) 队列 数组 链表 红黑树 二.List集合_介绍&常用方法 ArrayList集合 Linkedlist集合 三.Hash ...
- java list 前100个_实现java 中 list集合中有几十万条数据,每100条为一组取出
解决"java 中 list集合中有几十万条数据,每100条为一组取出来如何实现,求代码!!!"的问题. 具体解决方案如下: /** * 实现java 中 list集合中有几十万条 ...
- Java中Set集合的用法
java.util.Set 接口 extends Collection接口 1.Set接口的特点: (1)不允许存储重复的元素. (2)没有索引,没有带索引的方法,也不能使用普通的for循环遍历. 2 ...
- 考考基础部分,谈谈Java集合中HashSet的原理及常用方法
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:工匠初心 cnblogs.com/LiaHon/p/1125 ...
- java并发编程(二十一)----(JUC集合)CopyOnWriteArraySet和ConcurrentSkipListSet介绍
转载自 java并发编程(二十一)----(JUC集合)CopyOnWriteArraySet和ConcurrentSkipListSet介绍 这一节我们来接着介绍JUC集合:CopyOnWrite ...
- java学习记录十五:集合二Collections、Set、Map
java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...
- Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)
文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...
- java se系列(十二)集合
1.集合 1.1.什么是集合 存储对象的容器,面向对象语言对事物的体现,都是以对象的形式来体现的,所以为了方便对多个对象的操作,存储对象,集合是存储对象最常用的一种方式.集合的出现就是为了持有对象.集 ...
最新文章
- 我有点不喜欢分布式中的TCC模式了
- 结合泛函极值_泛函极值及变分法教程.doc
- daily scrum 12.9
- hashmap value占用空间大小_求比HashMap占用内存少的查找方法
- android 4.4.2截屏方法,android4.4.2 使用 uiautoviewer 截屏报错
- linux下安装dovecot
- 打通版微社区(1):PHP环境部署 for DZX3.2
- Object-C---gt;Swift之(十一)属性观察者
- 【转载】jQuery框架
- 哈勃分析系统解密:中招敲诈木马不用交赎金
- 了解RecyclerView的分割线
- [18调剂]上海海洋大学2018年硕士研究生调剂政策与规则
- 在类xx中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)否则 JavaFX 应用程序类必须....
- 张凯龙 西北工业大学计算机学院,张凯龙的个人主页-西北工业大学教师个人主页...
- BBUCTF消失的MD5题解
- 怎么修改证件照尺寸?这个方法可以轻松修改
- 魔域服务器修改和宝宝数据,宝宝属性与真实值之间的公式计算关系
- 手机电池电量剩余通知
- register at least one qt version using“qt vs tools“->“qt options“
- 门户通专访月光博客:第一博客是如何打造成的
热门文章
- 【Flink】Flink 1.10之改进的TaskManager内存模型与配置
- 【Flink】Flink 使用 CopyOnWriteArrayList 进行数据缓存的时候 一个bug
- 【Clickhouse】实时日志数据写入Clickhouse
- Spring Boot : Spring Boot Slf4j 以及 log4j 以及门面日志
- 工具包:Safetype Config使用
- Druid : 慢SQL统计与监控
- maven如何直接手动下载jar包
- 【git】git如何添加本地不是git的项目到Git库中
- Servlet之过滤器详解
- php得到第一个数组_php怎么获取数组第一个元素