黑马程序员-Java之HashSet
来源:互联网 发布:迅雷会员试用一天淘宝 编辑:程序博客网 时间:2024/05/29 16:53
--------------android培训、java培训、期待与您交流!---------------------
特性:元素存放无序,且元素值唯一
原理:由于底层元素存放结构是哈希表结构,所以是无序的,当新的元素存放的时候,会调用该元素的hashCode()计算出一个哈希值,然后去和集合中的原有元素的哈希值比较,如果相同,则调用元素的equals()进行内容的比较,内容不同则会在同一哈希值下按顺序依次排列存储,如果内容也相同则不会存储,以保证元素的唯一性
实例:往HashSet中存入自定义对象
代码:
package com.itheima;
import java.util.HashSet;
import java.util.Iterator;
class Person {
private String name;
private int age;
public Person(String name,int age){
this.setName(name);
this.setAge(age);
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public int hashCode(){
int hCode = name.hashCode()+age*39;
System.out.println(this.name+"---hashCode---"+hCode);
return hCode;
}
public boolean equals(Object obj){
if(!(obj instanceof Person)){
return false;
}
Person p = (Person)obj;
System.out.println(this.name+"---equals---"+p.name);
return this.name.equals(p.name) && this.age==p.age;
}
}
public class HashSetDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet hs = new HashSet();//创建一个HashSet对象
hs.add(new Person("zhangshan",18));//添加元素(存储)
hs.add(new Person("lisi",20));
hs.add(new Person("wangwu",19));
hs.add(new Person("zhaoliu",18));
hs.add(new Person("lisi",20));
System.out.println("------------------------");
Iterator it = hs.iterator();
while(it.hasNext()){//循环打印元素
Person p = (Person)it.next();
System.out.println(p.getName()+"----"+p.getAge());
}
}
}
- 黑马程序员-Java之HashSet
- 黑马程序员----------java基础加强之hashSet总结
- 黑马程序员:Java基础——Set集合之HashSet
- 黑马程序员--集合之HashSet/TreeSet原理
- 黑马程序员-------集合框架之HashSet
- “黑马程序员”HashSet
- 黑马程序员_集合之Set(HashSet与TreeSet)
- 黑马程序员 学习总结之HashSet和hashCode算法
- 黑马程序员——java集合中的HashSet
- 黑马程序员—Java集合框架(Set、HashSet、TreeSet)
- 黑马程序员-Java中的hashCode()方法和hashSet集合
- 黑马程序员---2015.6.21.java基础笔记---TreeSet---HashSet---HashMap
- 黑马程序员----java基础HashSet和TreeSet总结
- 黑马程序员学习hashset心得
- 黑马程序员_<<Set,HashSet>>
- 黑马程序员----HashCold与HashSet
- 黑马程序员_java基础hashSet
- 黑马程序员之了解java
- GRE数学常用符号及术语
- HMM模型之viterbi算法
- SAT单词准备完全计划
- 51单片机与PC串口通信
- java io 流的关闭
- 黑马程序员-Java之HashSet
- Android Post参数提交 List<NameValuePair>,web端获取数据
- Linux 内核/sys 文件系统介绍
- Android 轻松实现仿QQ消息下拉刷新
- [学习记录]NSSetUncaughtExceptionHandler异常捕获
- typedef常见用法
- 设计模式系列——三个工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- offsetX、clientX、pageX等位置的计算
- (KVM连载) 5.1.3 使用virtio_balloon(KVM中的Ballooning)(上)