从头认识java-9.10 Map

原创 2015年11月19日 22:28:49

这一章节我们来讨论一下Map。

Map就是“键值”关联数组。

1.演示

package com.ray.ch09;

import java.util.HashMap;
import java.util.Random;

public class Test {
	public static void main(String[] args) {
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		Random random = new Random();
		for (int i = 0; i < 10; i++) {
			int key = random.nextInt(50);
			if (map.get(key) == null) {
				map.put(key, 1);
			} else {
				int value = map.get(key);
				map.put(key, value + 1);
			}
		}
		System.out.println(map.toString());
	}
}


输出:

{19=1, 38=1, 36=1, 37=1, 42=1, 10=1, 40=1, 41=1, 11=1, 45=1}

注意:由于我们上面的代码使用hashmap,因此它记录的结果是无序的,当我们下一次运行代码的时候,它们的顺序将会不一样。

 

2.常用方法containKeys和containValue

package com.ray.ch09;

import java.util.HashMap;
import java.util.Random;

public class Test {
	public static void main(String[] args) {
		HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
		Random random = new Random();
		for (int i = 0; i < 10; i++) {
			int key = random.nextInt(50);
			if (map.get(key) == null) {
				map.put(key, 1);
			} else {
				int value = map.get(key);
				map.put(key, value + 1);
			}
		}
		System.out.println(map.toString());
		System.out.println(map.containsKey(3));
		System.out.println(map.containsValue(5));
	}
}


输出:

{32=1, 18=1, 38=1, 5=1, 23=1, 6=1, 42=1, 43=1, 29=1, 15=1}
false
false

一般我们会使用上面的方法来测试map里面是否有我们想要的对象。

 

3.把数据发展到多维。

package com.ray.ch09;

import java.util.ArrayList;
import java.util.HashMap;

public class Test {
	public static void main(String[] args) {
		HashMap<Person, ArrayList<Pet>> map = new HashMap<Person, ArrayList<Pet>>();
		Person person = new Person();
		ArrayList<Pet> pets = new ArrayList<Pet>();
		for (int i = 0; i < 10; i++) {
			pets.add(new Pet());
		}
		map.put(person, pets);
	}
}

class Person {
}

class Pet {
}


上面的代码其实我们已经把数据机构变成了多维的形式。

 

总结:这一章节主要讲述了HashMap的使用。

 

这一章节就到这里,谢谢。

-----------------------------------

目录

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

从头认识Spring-1.12 注入Map

这一章节我们简单介绍一下注入Map。1.domain烤炉类:(基本没什么变化)package com.raylee.my_new_spring.my_new_spring.ch01.topic_1_1...
  • raylee2007
  • raylee2007
  • 2016年02月01日 20:53
  • 1986

从头认识java-9.9 set

这一章节我们来讨论一些set。由于set里面的对象的不重复性,因此决定了set里面搜索查询的函数用的非常频繁,因此,我们一般使用hashset,因为它对于搜索进行了特殊的优化处理。1.HashSet由...
  • raylee2007
  • raylee2007
  • 2015年11月19日 09:31
  • 1386

从头认识java-15.1 填充容器(3)-填充Map

这一章节我们来讨论一下填充容器的另一个方面Map,之前的两个章节我们都是用list来作为容器,这一章节我们使用Map。还有在这里解释一下为什么一直都使用生成器这个东西,其实他就是建造者设计模式,它主要...
  • raylee2007
  • raylee2007
  • 2015年12月27日 16:32
  • 2255

从头认识java-15.7 Map(4)-介绍HashMap的工作原理-hash碰撞(经常作为面试题)

这一章节我们来讨论一下hash碰撞。1.什么是hash碰撞?就是两个对象的key的hashcode是一样的,这个时候怎么get他的value呢?答案是通过equals遍历table那个位置上面的Ent...
  • raylee2007
  • raylee2007
  • 2016年01月02日 22:56
  • 3875

从头认识java-15.7 Map(6)-介绍HashMap的工作原理-装载因子与性能

这一章节我们通过讨论装载因子与性能,再来介绍HashMap的工作原理。1.什么是装载因子?他有什么作用?下面的代码就是装载因子 /** * The load factor used when...
  • raylee2007
  • raylee2007
  • 2016年01月03日 23:31
  • 2256

从头认识java-15.7 Map(2)-介绍HashMap的工作原理-put方法

这一章节我们来介绍HashMap的工作原理。1.HashMap的工作原理图下图引用自:http://www.admin10000.com/document/3322.html(1)HashMap初始化...
  • raylee2007
  • raylee2007
  • 2015年12月31日 14:52
  • 4546

从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建

这一章节我们来使用数组模拟一下Map,了解一下Map的创建。1.Map是什么?Map,映射表,也叫关联数组,维护“键-值”的关联。2.使用数组模拟Mappackage com.ray.ch15; i...
  • raylee2007
  • raylee2007
  • 2015年12月30日 14:15
  • 2021

UBuntu9.10开发Java程序拦截inotify文件事件

注意,当前版本号是0.1,所以[version]都要换成0.1 并且还需要设置环境变量JAVA_HOME,可以只在编译用的终端设置 export JAVA_HOME=/usr/lib/jvm/ja...
  • u014571355
  • u014571355
  • 2014年05月05日 19:51
  • 839

11级_Java_曹建波 9.10 JDB处理大数据&大文本&二进制数据&批处理&事务

JDB处理大数据   在实际开发中,程序需要把大文本或二进制数据保存到数据库。 基本概念:大数据也称之为LOB(LargeObjects),LOB又分为:clob和blob clob用于存储大...
  • freekiteyu
  • freekiteyu
  • 2012年09月10日 14:34
  • 2193

ubuntu9.10 总不能安装sun-java5-jdk的解决办法

因为9.10版本已经把源去掉了,所以必须加上9.04的源,具体步骤如下: 1 打开 vim  /etc/apt/sources.list 2 在末尾加上9.04的源(这里有的网站说先去掉9.10的源,...
  • xuxinyl
  • xuxinyl
  • 2011年06月27日 11:57
  • 932
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:从头认识java-9.10 Map
举报原因:
原因补充:

(最多只允许输入30个字)