1,HashMap基本用法

 package list;

 import java.util.HashMap;
import java.util.Map; /**
* 测试map的基本用法
* @author acer
*
*/
public class Hashmap {
public static void main(String[] args)
{
Map map=new HashMap();
System.out.println(map.isEmpty());
map.put("日本汽车", new car("丰田"));
map.put("德国汽车", new car("奥迪"));
map.put("日本电器", new camera("canon"));
map.put("one", new Integer(1));
System.out.println(map.size());
car c=(car)map.get("日本汽车");
System.out.println(c.name);
System.out.println(map.containsKey("日本汽车"));
System.out.println(map.containsValue(new car("canon")));
System.out.println(map.containsValue(new Integer(1)));
map.remove("日本");
}
}
class car{
String name;
public car(String name)
{
this.name=name;
}
}
class camera{
String name;
public camera(String name)
{
this.name=name;
}
}

2.自己定义HashMap()(原始版)

 package list;
/**
* 实现较为粗糙的HashMap类
* Map:1,存放键值对2根据键对象找相应的值对象3键值不能重复
* @author acer
*
*/
public class myHashMap {
arrmap[] arr=new arrmap[100];//此时暂时不考虑数组扩容问题,只实现一些基本的方法
int size;
public void put(Object key,Object value)
{
arrmap newarr=new arrmap(key,value);
//解决键值重复的问题
for(int i=0;i<size;i++)
{
if(arr[i].key.equals(key))
{
arr[i].value=value;
return;
}
}
arr[size++]=newarr;
}
public Object get(Object key)
{
for(int i=0;i<size;i++)
{
if(arr[i].key.equals(key))
return arr[i].value;
}
return null;
}
public boolean containsKey(Object key)
{
for(int i=0;i<size;i++)
{
if(arr[i].key.equals(key))
{
return true;
}
}
return false;
}
public boolean containsValue(Object value)
{
for(int i=0;i<size;i++)
{
if(arr[i].value.equals(value))
{
return true;
}
}
return false;
}
public static void main(String[] args)
{
myHashMap arr=new myHashMap();
arr.put("日本", new car("丰田"));
arr.put("德国", new car("奔驰"));
arr.put("美国", new car("福特"));
arr.put("日本电器", new camera("canon"));
car c=(car)arr.get("日本");
System.out.println(c.name);
camera d=(camera)arr.get("日本电器");
System.out.println(d.name);
System.out.println(arr.containsKey("日本"));
System.out.println(arr.containsValue(new car("丰田")));
arr.put("日本", new car("本田"));
c=(car)arr.get("日本");
System.out.println(c.name);
}
}
class arrmap
{
Object key;
Object value;
public arrmap(Object key,Object value)
{
this.key=key;
this.value=value;
}
}

3.升级版

 package list;

 import java.util.LinkedList;

 /**
* 完善粗糙的myhashmap
* 提高查询效率
* @author acer
*
*/
public class myHashMapUpdate {
LinkedList[] arr=new LinkedList[999];
int size;
public void put(Object key,Object value)
{
arrmap arra=new arrmap(key,value);
int a=key.hashCode()%999;
if(arr[a]==null)
{
LinkedList list=new LinkedList();
arr[a]=list;
list.add(arra);
}
else
{
LinkedList list=arr[a];
for(int i=0;i<list.size();i++)
{
arrmap arra1=(arrmap)list.get(i);
if(arra1.key.equals(key))
{
arra1.value=value;
return;
}
}
arr[a].add(arra);
}
}
public Object get(Object key)
{
int a=key.hashCode()%999;
if(arr[a]!=null)
{
LinkedList list=arr[a];
for(int i=0;i<list.size();i++)
{
arrmap arra=(arrmap)list.get(i);
if(arra.key.equals(key))
{
return arra.value;
}
}
}
return null;
}
public static void main(String[] args)
{
myHashMapUpdate arr=new myHashMapUpdate();
arr.put("日本", new car("丰田"));
arr.put("日本", new car("本田"));
arr.put("德国", new car("奔驰"));
arr.put("美国", new car("福特"));
arr.put("日本电器", new camera("canon"));
car c=(car)arr.get("日本");
System.out.println(c.name);
}
}

java开始到熟悉105-107的更多相关文章

  1. 20165304实验一java开发环境熟悉

    实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...

  2. 20165320 实验一 java环境的熟悉

    实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...

  3. java开始到熟悉100-102

    本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...

  4. [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  5. java基础:熟悉3种内部类的写法,重点匿名内部类的使用

    一.内部类定义 内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类.嵌套类分为两种,即静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类,也即 ...

  6. Java知多少(105)套接字(Socket)

    网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...

  7. Java基础知识强化105:打印数组的方法总结

    1. 使用for循环打印数组. 2. 使用Arrays工具类,将数组转化为有序的List打印出来. 3. 使用Arrays工具类,使用Arrays.toString()输出数组内容. 上面三种方法打印 ...

  8. Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值

    package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...

  9. Android(java)学习笔记105:Android启动过程(转载)

    转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...

随机推荐

  1. 【bzoj2225】[Spoj 2371]Another Longest Increasing CDQ分治+树状数组

    题目描述 给定N个数对(xi, yi),求最长上升子序列的长度.上升序列定义为{(xi, yi)}满足对i<j有xi<xj且yi<yj. 样例输入 8 1 3 3 2 1 1 4 5 ...

  2. WIFI万能钥匙协议分析

    WIFI万能钥匙协议分析 需求: 上android 市场下载任意一款,wifi万能钥匙 软件,对其进行 协议分析和逆向,达成如下结果:通过对软件的分析,完成自动化爬虫,爬wifi万能钥匙的wifi库, ...

  3. 使用UltraEdit 替换解决---文字中含有逗号的文件,如何把逗号自动转换成为:回车换行呢?

    实际工作中有时经常遇到一个问题: 一行文字中含有逗号,如何把逗号自动转换成为:回车换行呢? 普遍存在的问题,用Ultredit中^r^n(回车换行)也可以完成.提供大家参考. 王乐,李宏宇,张志鹏,刘 ...

  4. PAT 甲级1002 A+B for Polynomials (25)

    1002. A+B for Polynomials (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue T ...

  5. 【CF675E】Trains and Statistic(贪心,DP,线段树优化)

    题意:a[i]表示从第i个车站可以一张票到第[i+1,a[i]]这些车站;p[i][j]表示从第i个车站到第j个车站的最少的票数,现在要求∑dp[i][j](1<=i<=n,i<j& ...

  6. 两个时间相差多少 .net中的timespan应用

    原文发布时间为:2008-10-31 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...

  7. es6总结(十一)--class & decorator

  8. PHP错误捕获处理

    PHP错误捕获处理 一般捕获错误使用的方法是: try{ ...}catch(Exception $e){ echo $e->getMessage();} 或者 set_exception_ha ...

  9. bzero 字符数组清零

    原来bzero()是这个功能,学习啦.下面的文章可以好好参考,出处:http://hi.baidu.com/wg_wang/item/5fa42c15c73b8efa9c778af8 bzero &a ...

  10. luogu P1402 酒店之王

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...