containsKey方法和

                 HashMap集合中containsKey方法

1、 containsKey(Object key)功能介绍:如果此映射包含指定键的映射关系,则返回 true

remove(Object key) 如果存在此键的映射关系,则将其从映射中移除 ,否则返回null。

2、问题描述 :

--------------------创建实体类-------------------------

public class Foods{

private int id; // 商品编号在数据库中是唯一的

private String name; // 商品名称

//保留此不带参数的构造方法

public Foods()

{

}

public  Foods(int id,String name)

{

this.id = id;

this.name = name;

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

}

----------------------new一个food对象并放入HashMap集合中---------------------------

Foods food=new Foods(101,"二哈");

HashMap<Foods,int> map=new HashMap<Foods,int>();

map.put(food,2);

-----------------------new一个和上述一样的food对象并在上述map中查询,删除food对象----

Foods food=new Foods(101,"二哈");

map.containsKey(food);//返回值为false;

map.remove(food);//返回null

----------------------------原因分析------------------------------------

虽然两个food的是相同的,但是两个food的存储地址不同,所以两个food.hashCode() 是不同的。

----------------------------处理方法--------------------------------------

在Foods类中改写 hashCode()和 equals(Object obj);

@Override

public int hashCode() {

// TODO Auto-generated method stub

return this.getId()+this.getName().hashCode();

//因为这里判断的标准是只要两个foods的对象的属性是相同的则认为两个foods对象是同一个对象

}

@Override

public boolean equals(Object obj) {

// TODO Auto-generated method stub

if(this==obj)//判断形参是不是实参的索引

{

return true;

}

if(obj instanceof Foods)//判断形参和实参是不是同一类

{

Items i = (Foods)obj;// 将形参转化成和实参为相同的类型

if(this.getId()==i.getId()&&this.getName().equals(i.getName()))

{     //比较形参和实参的属性是否相同

return true;

}

else

{

return false;

}

}

else

{

return false;

}

}

时间: 2024-12-21 01:28:36

containsKey方法和的相关文章

ArrayList的contains方法和HasMap的containsKey效率差十倍

问题源自于leetcode上的一道题: twoSum: Given an array of integers, return indices of the two numbers such that they add up to a specific target. You may assume that each input would have exactly one solution. Example: Given nums = [2, 7, 11, 15], target = 9, Be

学习ASP .NET MVC5官方教程总结(七)Edit方法和Edit视图详解

学习ASP .NET MVC5官方教程总结(七)Edit方法和Edit视图详解 在本章中,我们研究生成的Edit方法和视图.但在研究之前,我们先将 release date 弄得好看一点.打开Models\Movie.cs 文件.先添加一个引用: <span style="font-size:14px;">using System.ComponentModel.DataAnnotations;</span> 然后在Movie类中添加以下代码: [Display(

详解equals()方法和hashCode()方法

前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.equals()和hashCode()都不是final方法,都可以被重写(overwrite). 本文介绍了2种方法在使用和重写时,一些需要注意的问题. 一.equal()方法 Object类中equals()方法实现如下: public boolean equals(Object obj) { return (this == obj); } 通过该实现

【学习笔记】【OC语言】set方法和get方法

1.set方法和get方法的使用场合@public的成员可以被随意赋值,应该使用set方法和get方法来管理成员的访问(类似机场的安检.水龙头过滤,过滤掉不合理的东西),比如僵尸的生命值不能为负数2.set方法作用:用来设置成员变量,可以在方法里面过滤掉一些不合理的值命名规范:方法都是以set开头,而且后面跟上成员变量名,成员变量名的首字母必须大写形参名称不要跟成员变量同名3.get方法作用:返回对象内部的成员变量命名规范:get方法的名称一般就跟成员变量同名4.成员变量的命名规范成员变量都以下

java——多线程——单例模式的static方法和非static方法是否是线程安全的?

单例模式的static方法和非static方法是否是线程安全的? 答案是:单例模式的static方法和非static方法是否是线程安全的,与单例模式无关.也就说,如果static方法或者非static方法不是线程安全的,那么不会因为这个类使用了单例模式,而变的安全. 闲话休说,看代码: import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; public class TestSingl

C# 类中隐藏基类方法和Partial

原文:C# 类中隐藏基类方法和Partial 今天对于.NET开发人员来说最开心的事情莫过于微软搞开源了,这觉得是给搞.NET开发的长脸.虽然我是一个初学者,这无疑给我极大的学习动力.Fighting!!! 当一个类从父类继承了一个成员时,也就继承了它的执行代码,如果成员时虚拟的,我们可以用override重写这段执行代码.但无论他是否是虚拟的,都可以通过new 关键字来隐藏它.例如: public class BaseClass { public void DoSomething() { //

java 数组的 toString 方法和 equals 方法以及 java.lang.Object 对象的 toString 方法和 equals 方法

1 public class Test { 2 public static void main(String[] args) { 3 int[] a = {1, 2, 4, 6}; 4 int[] b = a; 5 int[] c = {1, 2, 4, 6}; 6 7 //下面这个方法打印的是a数组的引用地址 8 System.out.println(a.toString()); 9 //下面这个方法比较的是两个数组的引用是否相等 10 System.out.println("a.equals

jQuery.extend()方法和jQuery.fn.extend()方法

jQuery.extend()方法和jQuery.fn.extend()方法源码分析 这两个方法用的是相同的代码,一个用于给jQuery对象或者普通对象合并属性和方法一个是针对jQuery对象的实例,对于基本用法举几个例子: html代码如下: <!doctype html> <html> <head> <title></title> <script src='jquery-1.7.1.js'></script> <

黑马程序员 02-set方法和get方法

———Java培训.Android培训.iOS培训..Net培训.期待与您交流! ——— 1.set方法与get方法的使用场合 @public的成员变量可以被外界随意赋值,往往会产生脏数据,应该使用set方法和get方法来管理成员的访问(类似安检.水龙头过滤,过滤掉不合理的对象),不如人的年龄不可能为负. 2.set方法 (1)作用:给外界提供一个公共的方法用来设置成员变量值,可以在方法里面过滤掉一些不合理的值: (2)命名规范: 1> 方法名必须以set开头 2> set后面跟上成员变量的名