HashSet中出现的问题
发布时间:2023-11-27 21:02:13 212 相关标签:
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);
}
}
内存分析
文章来源: https://blog.51cto.com/u_15769923/5854401
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报