java开始到熟悉105-107
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的更多相关文章
- 20165304实验一java开发环境熟悉
实验报告封面 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:李松杨 学号:20165304 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:13:45 - 15:25 实 ...
- 20165320 实验一 java环境的熟悉
实验内容与步骤 一.java开发环境的熟悉 1.建立一个有关自己学号的目录 2.在当前文件下编译一个带包Hello.java文件 3.代码内容 package sq; import java.util ...
- java开始到熟悉100-102
本次内容:arraylist() 1. package list; import java.util.ArrayList; import java.util.Date; import java.uti ...
- [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- java基础:熟悉3种内部类的写法,重点匿名内部类的使用
一.内部类定义 内部类(nested classes),面向对象程序设计中,可以在一个类的内部定义另一个类.嵌套类分为两种,即静态嵌套类和非静态嵌套类.静态嵌套类使用很少,最重要的是非静态嵌套类,也即 ...
- Java知多少(105)套接字(Socket)
网络应用模式主要有: 主机/终端模式:集中计算,集中管理: 客户机/服务器(Client/Server,简称C/S)模式:分布计算,分布管理: 浏览器/服务器模式:利用Internet跨平台. www ...
- Java基础知识强化105:打印数组的方法总结
1. 使用for循环打印数组. 2. 使用Arrays工具类,将数组转化为有序的List打印出来. 3. 使用Arrays工具类,使用Arrays.toString()输出数组内容. 上面三种方法打印 ...
- Android(java)学习笔记105:Map集合的遍历之键值对对象找键和值
package cn.itcast_01; import java.util.HashMap; import java.util.Map; import java.util.Set; /* * Map ...
- Android(java)学习笔记105:Android启动过程(转载)
转载路径为: http://blog.jobbole.com/67931/ 1. 关于Android启动过程的问题: 当按下Android设备电源键时究竟发生了什么? Android的启动过程是怎么样 ...
随机推荐
- Learning Deconvolution Network for Semantic Segme小结
题目:Learning Deconvolution Network for Semantic Segmentation 作者:Hyeonwoo Noh, Seunghoon Hong, Bohyung ...
- 解压文件夹python
# _*_ coding: utf-8 _*_ import zipfile import shutil import os print os.getcwd() basedir = os.path.d ...
- 山东理工大学第七届ACM校赛-G 飞花的传送门
G - 飞花的传送门 飞花壕最近手头比较宽裕,所以想买两个传送门来代步(夏天太热,实在是懒得走路).平面上有N个传送门,飞花壕想要挑两个距离最远的传送门带回家(距离为欧几里得距离,即两点之间直线距离) ...
- 许式伟看 Facebook 发币(上): 区块链, 比特币与 Libra 币
你好,我是七牛云许式伟. Facebook(脸书)于6月18日发布了其加密数字货币项目白皮书.该数字货币被命名为 Libra(天秤座),象征着平衡与公正.此前,BBC 报道说这个数字货币叫 Globa ...
- NOIP2017赛前模拟(5):总结
题目: 1.刮刮卡 已知n(n<=1000000)张刮刮卡按顺序排列,刮开可以获得B元现金和B个积分,购买刮刮卡需要A元,某人若按照顺序刮开的话··当B的总和小于A时便会停止刮卡(即花出去的钱多 ...
- JSR310 时间类型的相互转换
参数申明: final Date date = new Date(); final Timestamp timestamp = new Timestamp(date.getTime()); final ...
- jdk1.7升级到1.8遇到的问题
1.修改project structure 里面的Project , Modules , SDKs jdk的版本 2.修改Java Compiler 里面java的jdk版本 3.tomcat 里面j ...
- net5:动态修改内存中的站点地图节点
原文发布时间为:2008-07-29 -- 来源于本人的百度文章 [由搬家工具导入] using System;using System.Data;using System.Configuration ...
- linux信号------探步
前言 Linux以进程为单位来执行程序.我们可以 将计算机看作一个大楼,内核(kernel)是大楼的管理员,进程是大楼的房客.每个进程拥有一个独立的房间(属于进程的内存空间),而每个房间都是不允 许该 ...
- 【開發時,應注意事項】 vendor tools 無法 work 時,怎麼辦?
遇到 vendor tools 無法 work 時, 最好的方法直接請 vendor 來, 為什麼呢? 因為 tool 可能 有版本的問題, 譬如: vendor tool A tool 在 buil ...