java- (c.remove(new Name("f1","l1")));为什么没被移除

问题描述

(c.remove(new Name("f1","l1")));为什么没被移除

import java.util.*;

public class BasicContainer {
public static void main(String[] args) {
Collection c = new HashSet();
c.add("hello");
c.add(new Name("f1","l1"));
c.add(new Integer(100));
c.remove("hello");
c.remove(new Integer(100));
System.out.println
(c.remove(new Name("f1","l1")));
System.out.println(c);
}

}

class Name implements Comparable {
private String firstName,lastName;
public Name(String firstName, String lastName) {
this.firstName = firstName; this.lastName = lastName;
}
public String getFirstName() { return firstName; }
public String getLastName() { return lastName; }
public String toString() { return firstName + " " + lastName; }

public boolean equals(Object obj) {
    if (obj instanceof Name) {
        Name name = (Name) obj;
        return (firstName.equals(name.firstName))
            && (lastName.equals(name.lastName));
    }
    return super.equals(obj);
    }
    public int hashCode() {
        return firstName.hashCode();
    }

    public int compareTo(Object o) {
    Name n = (Name)o;
    int lastCmp =
        lastName.compareTo(n.lastName);
    return
         (lastCmp!=0 ? lastCmp :
          firstName.compareTo(n.firstName));
}

}

解决方案

remove是new出来的对象,hashmap是通过hashcode区分是不是同一个对象的。
两个对象的hashcode不一样,除非你重写一下name类的hashcode获取方式。

解决方案二:

你这样操作会不会报要删除的元素不存在?

解决方案三:

  1. 重写hashCode, equal方法
  2. 不能直接删除,采用iterator迭代删除
时间: 2024-09-20 04:50:22

java- (c.remove(new Name("f1","l1")));为什么没被移除的相关文章

整合大量开源库项目(六)ListView动画,Activity"抽象化",顺便提一提”抽象类“And"接口"

转载请注明出处:王亟亟的大牛之路 昨天发了一个自己写的简单的诸如EditText一个自定义控件,不过貌似反响不太好,这里再推一推,希望大家给予意见和支持:http://blog.csdn.net/ddwhan0123/article/details/50235151 OK,言归正传,上一次添加了一个"个人开发:界面,希望把之后自己写的一些东西都加入里面,作为一个"大型Lib"使用,所以就简单的把内容和界面搭了一下,也大致区分了下栏目,这种展示性的还是以ListView为佳,上

web.xml求救 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

问题描述 请问默认的web.xml下都会生成<web-appid="WebApp_ID"version="2.4"xmlns="http://java.sun.com/xml/ns/j2ee"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2eehttp://

&amp;quot;PageMethods未定义&amp;quot;或&amp;quot;对象不支持此属性或方法&amp;quot;解决方法分享

1.检查web.config中是否加入对于asp.net ajax的支持的代码 2.检查ScriptManager中是否设置了EnableMethods=true 3.检查后台cs中是否引用的命名空间System.Web.Services或者加入了[System.Web.Services.WebMethod] 4.后台函数必须是public static 5. 还有一种情况就是,通常,有些人在复制这个aspx页面时,经常是连同,<%@ Page Language="C#" Aut

SQL BUG集之&amp;amp;quot;随机排序中的newid()问题&amp;amp;quot;

排序|随机|问题 /**==** 2. 随机排序中的newid()问题 **==**/--测试数据declare @t table(name char(1),value int)insert into @tselect 'a',1union all select 'a',2union all select 'b',3union all select 'b',4union all select 'c',5union all select 'c',6 --要求,随机排序,但name相同的要排在一齐s

ios-iOS键盘弹出警告&amp;amp;quot;Can&amp;amp;#39;t find keyplane......&amp;amp;quot;

问题描述 iOS键盘弹出警告"Can't find keyplane......" 一点击UITextField,logo显示区就打印如下: Can't find keyplane that supports type 4 for keyboard iPhone-PortraitChoco-NumberPad; using 1336863583__PortraitChoco__iPhone-Simple-Pad__Default_ _我对UITextField的代码如下: rect =

&amp;quot;XX cannot be resolved to a type &amp;quot;eclipse报错及解决说明

转自:http://zhaoningbo.iteye.com/blog/1137215 引言:      eclipse新导入的项目经常可以看到"XX cannot be resolved to a type"的报错信息.本文将做以简单总结.  正文:      (1)jdk不匹配(或不存在)      项目指定的jdk为"jdk1.6.0_18",而当前eclipse使用的是"jdk1.6.0_22".需要在BuildPath | Librar

&amp;quot;网卡eth0,未识别的端口&amp;quot;的解决方法

用service network restart 后,有时会得到这样的提示(serivce network status 读取的是etc/sysconfig/network-script/ifcfg-*文件). 用service network restart 后,有时会得到这样的提示(serivce network status 读取的是etc/sysconfig/network-script/ifcfg-*文件) Shutting down loopback interface:      

asp的字符串&amp;amp;quot;&amp;amp;amp;time&amp;amp;quot;为什么输出的时候变成了&amp;amp;quot;×&amp;amp;quot;

问题描述 asp的字符串"&time"为什么输出的时候变成了"×" 我不是要连接字符串 &就是本身,字符串中的字符 我想输出"ABC&timeDEF" 但是实际输出时却会变成了"ABC×DEF" 而&和其他非"time"字符相邻时就没有任何问题 求大神帮助,万分感谢 解决方案 没有问题,你代码呢,处理过了吧 <%response.write "ABC&

报错\&amp;quot;ORA-01861: 文字与格式字符串不匹配\&amp;quot;

点击打开链接