java集合(HashSet)
来源:互联网 发布:adobe软件 mac百度云 编辑:程序博客网 时间:2024/06/04 18:42
import java.util.HashSet;
import java.util.Iterator;
/*
* !--Set:元素是无序(存入和取出的顺序不一定一致)元素不可以重复。
* !--HashSet:底层数据结构是哈希表。
* !--TreeSet:
* Set集合的功能和Collection是一致的。
* 哈希表:按照哈希值来存储,元素的哈希值相同,则比较元素的内容是否相同,一个hash值可以顺延存储很多元素。
//自定义哈希值
public int hashCode()
{
return 60;
}
Demo d2=new Demo();
//输出对象的哈希值
sop(d1);
HashSet ha=new HashSet();
//添加元素,输出添加方法的(boolean)返回值。
sop(ha.add("java01"));
sop(ha.add("java01"));
ha.add("java02");
ha.add("java02");
ha.add("java03");
Iterator it=ha.iterator();
//输出容器元素
while (it.hasNext())
{
sop(it.next());
{
System.out.println(obj);
*HashSet是如何保证元素的唯一性:
*1.通过两个方法,hashCode和equals来完成。
*如果元素的HashCode值相同,才会判断equals是否为true。
*如果元素的hashCode值不同,才会调用equals。
*尽量保证hash值得唯一性。
*当往HahsSet里面添加元素时,集合底层会自动调用hashCode和equals方法。
*HashSet的判断和删除都是依赖于hashCode和equals方法。 先比较哈希值,再调用equals方法。
import java.util.Iterator;
public class HashSetDemo {
public static void main(String[] args)
HashSet hs=new HashSet();
//添加元素
hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
// hs.add(new Person("a1",11));
Iterator it=hs.iterator();
while (it.hasNext())
{
//向下转型,让obj能调用Person的方法。
Person p=(Person) it.next();
sop(p.getName()+"--"+p.getAge());
{
System.out.println(obj);
//定义一个Person类
class Person{
//定义私有变量name和age
private String name;
private int age;
//定义Person的有参构造函数,并且对私有成员变量进行初始化。
Person(String name,int age)
{
this.name=name;
this.age=age;
}
//复写hashCode方法
public int hashCode(){
System.out.println(this.name+"--hashCode");
return name.hashCode()+age;
}
//复写equals方法
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==this.age);
}
//为私有成员提供对外访问方式
public String getName()
{
return name;
}
//为私有成员提供对外访问方式
public int getAge()
{
return age;
}
}
import java.util.Iterator;
/*
* !--Set:元素是无序(存入和取出的顺序不一定一致)元素不可以重复。
* !--HashSet:底层数据结构是哈希表。
* !--TreeSet:
* Set集合的功能和Collection是一致的。
* 哈希表:按照哈希值来存储,元素的哈希值相同,则比较元素的内容是否相同,一个hash值可以顺延存储很多元素。
*/
//自定义哈希值
public int hashCode()
{
return 60;
}
}
public static void main(String[] args) {
Demo d2=new Demo();
//输出对象的哈希值
sop(d1);
sop(d2);*/
HashSet ha=new HashSet();
//添加元素,输出添加方法的(boolean)返回值。
sop(ha.add("java01"));
sop(ha.add("java01"));
ha.add("java02");
ha.add("java02");
ha.add("java03");
ha.add("java04");
Iterator it=ha.iterator();
//输出容器元素
while (it.hasNext())
{
sop(it.next());
}
}
{
System.out.println(obj);
}
}
*HashSet是如何保证元素的唯一性:
*1.通过两个方法,hashCode和equals来完成。
*如果元素的HashCode值相同,才会判断equals是否为true。
*如果元素的hashCode值不同,才会调用equals。
*尽量保证hash值得唯一性。
*当往HahsSet里面添加元素时,集合底层会自动调用hashCode和equals方法。
*HashSet的判断和删除都是依赖于hashCode和equals方法。 先比较哈希值,再调用equals方法。
*/
import java.util.Iterator;
public class HashSetDemo {
public static void main(String[] args)
{
HashSet hs=new HashSet();
//添加元素
hs.add(new Person("a1",11));
hs.add(new Person("a2",12));
hs.add(new Person("a3",13));
// hs.add(new Person("a1",11));
//hs.add(new Person("a4",14));
//sop("a1:"+hs.contains(new Person("a2",12)));
sop("a1:"+hs.remove(new Person("a2",12)));
Iterator it=hs.iterator();
while (it.hasNext())
{
//向下转型,让obj能调用Person的方法。
Person p=(Person) it.next();
sop(p.getName()+"--"+p.getAge());
}
}
{
System.out.println(obj);
}
//定义一个Person类
class Person{
//定义私有变量name和age
private String name;
private int age;
//定义Person的有参构造函数,并且对私有成员变量进行初始化。
Person(String name,int age)
{
this.name=name;
this.age=age;
}
//复写hashCode方法
public int hashCode(){
System.out.println(this.name+"--hashCode");
return name.hashCode()+age;
}
//复写equals方法
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==this.age);
}
//为私有成员提供对外访问方式
public String getName()
{
return name;
}
//为私有成员提供对外访问方式
public int getAge()
{
return age;
}
}
0 0
- Java 集合框架-HashSet
- java基础--HashSet集合
- java集合(HashSet)
- Java集合之HashSet
- java集合之HashSet
- java中的HashSet集合
- java集合-HashSet
- java集合------HashSet
- java 集合框架-HashSet
- Java集合-HashSet
- 08.Java 集合 - HashSet
- java-基础-集合hashset
- Java集合之HashSet
- 【java集合系列】---HashSet
- Java HashSet 集合
- Java集合之HashSet
- JAVA-集合,HashSet
- Java集合(2)HashSet
- java中 将对象转换为json
- php 随机获取数组 的方法
- 素数算法详解
- Android上获取SIM卡号码
- IOS 计算时间差
- java集合(HashSet)
- JDK环境配置与Tomcat
- Java基础--字符串操作
- hibernate jar包介绍
- 深入android Unable to resolve target 'android-XX'详解
- <一>新手学opencv之cvSetMouseCallback笔记
- JNI传递字符串数组J-StringArray
- 2013年各大小IT公司待遇,绝对真实,一线数据!(初版)
- If you object has an "Id' property, it will be set with the generated Id from MongoDB.