返回

HashSet中出现的问题

发布时间:2023-11-27 21:02:13 200

 

HashSet存储书名,不允许存储重复书名,但是当某一书名被修改后,不能再删除了?

 

 

 

package cn.itcast.review;
import java.util.HashSet;
import java.util.Iterator;
/*

集合
单例集合
----------| Collection 单列集合的根接口
----------------| List 如果是实现了List接口集合类具备的特点: 有序,可重复。
-------------------| ArrayList 底层使用Object数组实现的。 特点: 查询速度快,增删慢。
-------------------| LinkedList 底层是使用了链表数据数据结构实现的。 特点: 查询慢,增删快。
-------------------| Vector(了解) 底层使用Object数组实现的, 实现与ArrayList是一样,只不过是线程安全的,操作效率低。
----------------| Set 如果是实现了Set接口集合类具备的特点: 无序,不可重复。
------------------| HashSet 底层使用的是哈希表实现的。
------------------| TreeSet 底层使用二叉数实现。
双列集合:
--------| Map (只需要把Map接口的方法全部练习一次即可。)
-----------| HashMap 底层使用的是哈希表实现的。
-----------| TreeMap 底层使用二叉数实现
-----------| HashTable(了解)
*/
class Book{

String name;

double price;
public Book(String name, double price) {
super();
this.name = name;
this.price = price;
}

@Override
public int hashCode() {
return this.name.hashCode();
}

@Override
public boolean equals(Object obj) {
Book b = (Book)obj;
return this.name.equals(b.name);
}


@Override
public String toString() {
return "[书名:"+ this.name+" 价格:"+this.price+"]";
}
}
public class Demo15 {

public static void main(String[] args) {
//不允许重复的书名存在。
HashSet books = new HashSet();
books.add(new Book("深入javaweb",34));
books.add(new Book("java神书",78));

//修改书名
Iterator it = books.iterator();
while(it.hasNext()){
Book b = it.next();
if(b.name.equals("java神书")){
b.name = "java编程思想";
}
}

//为什么修改名字之后不能删除了呢?
books.remove(new Book("java神书",78));

System.out.println("集合的元素:"+ books);




}

}

 

 

内存分析

 

 

 

HashSet中出现的问题_HashSet

 

特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线
下一篇
BorderLayout(边框布局管理器) 2023-11-27 18:10:53