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. xml和pandas结合处理的一个小例子-待完善

    #!/usr/bin/env python3 # -*- coding:utf-8 -*- import pandas import json import xml.etree.ElementTree ...

  2. Dancing Links 模板

    struct dl{ // x: line, y: column struct node{ int c, left, right, up, down; }; vector<node> a; ...

  3. HDU-1853 Cyclic Tour

    最小权值环覆盖问题:用几个环把所有点覆盖,求所选取的边最小的权值之和. 拆点思想+求最小转求最大+KM算法 #include <cstdlib> #include <cstdio&g ...

  4. java面试题之哨兵如何判断主服务器是否下线?

    通过流言协议来接收关于主服务器是否下线的信息,并使用投票协议来决定是否执行自动故障迁移,以及选择哪个从服务器作为新的主服务器.

  5. Bootstrap 模态框(Modal)插件数据传值

    原文:http://blog.csdn.net/baalhuo/article/details/51178154 模态框具体代码如下: <!-- 模态框(Modal) --> <di ...

  6. 关于在IE下面promise兼容的解决办法

    下载es6-promise就可以解决这个问题 import ES6Promise from "es6-promise" if(!window.Promise) { console. ...

  7. 我要好offer之 搜索算法大总结

    1. 二分搜索 详见笔者博文:二分搜索的那些事儿,非常全面 2. 矩阵二分搜索 (1) 矩阵每行递增,且下一行第一个元素大于上一个最后一个元素 (2) 矩阵每行递增,且每列也递增 3. DFS 深度优 ...

  8. 我要好offer之 排序算法大总结

    1. 插入排序 (1) 直接插入排序 void StraightInsertionSort(std::vector<int>& num) { || num.size() == ) ...

  9. POJ 3233

    矩阵分治 注意不要用 (*this) 会改变原值 #include <iostream> #include <cstdio> #include <cstring> ...

  10. 我的logging 配置

    #encoding=utf-8 import logging.config logging.config.dictConfig({ 'version': 1, 'disable_existing_lo ...