java-测试开始map基本操作

package java_test;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;

public class mapDemo {
	public void mapAction(){//map基本操作
		Map<String,String> map =new HashMap<String,String>();
		map.put("a", "this is a");//往map里添加一堆键值对
		int len=map.size();//一共有多少对键值对
		System.out.println(len);//输出1

		String a=map.get("a");//获取key为a的value值
		System.out.println(a);//输出this is a
		System.out.println(map.get("b"));//获取一个不存在的key的value值时,返回值为null,并不会抛出异常

		map.put("a", "this is the second a");//添加一个已经存在key,后面添加的value值会覆盖前面已经存在的value
		System.out.println(map.get("a"));//输出this is the second a

		boolean c=map.containsKey("a");//判断map中是否存在key  a
		System.out.println(c);//输出true
		boolean v=map.containsValue("this is the second a");//判断map中是否存在给定的value
		System.out.println(v);//输出true

		Map<String,String> m1=new HashMap<String,String>();
		m1.put("a", "this is the third a");
		m1.put("d", "this is d");
		System.out.println(m1);
		map.putAll(m1);//取map与m1的并集,如果m1中已经在map中存在的key,则m1中的value会覆盖map中的存在key的value,并集的值会赋值给map
		System.out.println(map);
	}

	public void loopMap(){
		Map<String,String> map=new HashMap<String,String>();
		map.put("a", "this is a");
		map.put("b", "this is b");
		/**
		 * set可以理解为一直特殊的List,只是里面的元素对象是不允许重复的,keySet是将key都放到一个集合里面去
		 * HashMap是无序排列的keySet后,set对象也是无序的
		 */
		Set<String> set=map.keySet();
		for(String s:set){
			System.out.println(map.get(s));//循环输出map的value
		}
	}

	public void loopRemoveMap(){
		Map<Integer,String> map=new HashMap<Integer,String>();
		map.put(1, "this is a");
		map.put(2, "this is b");
		/**
		 * set虽然可以看做是一个特殊的list,但是set没有像list一样有一个通过get取值的方式
		 * 要想取值,可以将set转为list,或者转为iterator
		 */
		Set<Integer> set =map.keySet();
		List<Integer> list=new ArrayList<Integer>(set);//set转为list
		for(int i=0;i<list.size();i++){
			map.remove(list.get(i));
		}
		System.out.println(map);//输出{}
	}

	public void clearMap(){//清空map
		Map<Integer,String> map=new HashMap<Integer,String>();
		map.put(1, "this is a");
		map.put(2, "this is b");
		boolean e =map.isEmpty();//判断map里是否存在键值对
		System.out.println(e);//输出true
		map.clear();//清除map里所有的键值对
		e=map.isEmpty();
		System.out.println(e);//输出true
	}

	public void sortMapByKey(){//简单排序
		Map<String,String> map=new HashMap<String,String>();
		map.put("a", "this is a");
		map.put("c", "this is c");
		map.put("b", "this is b");
		System.out.println(map);
		/**
		 * TreeMap是一个按key进行圣墟排列的一个Map实现类
		 * TreeMap会自动的把里面的键值对进行排序
		 * 利用这一点,将HashMap转换为TreeMap,即可实现Map按key进行排序
		 */
		Map<String,String> tm=new TreeMap<String,String>();
		tm.putAll(map);
		map=tm;
		System.out.println(map);
	}

	public void sortFuZaMapByKey(){
		Map<String,String> map=new HashMap<String,String>();
		map.put("a", "this is a");
		map.put("c", "this is c");
		map.put("b", "this is b");
		/**
		 * LonkedHashMap是会记录你put进去的顺序,输出时,会按照你put进去的顺序进行输出
		 * 利用这一点,将HashMap的key按要求排列号,然后再put进一个LinkedHashMap即可实现map的复杂排序
		 */
		Map<String,String> lm= new HashMap<String,String>();
		List<String> list =new ArrayList<String>(map.keySet());
		Collections.sort(list,new Comparator<String>)(){

		}

	}

	public static void main(String[] args) {
		mapDemo m=new mapDemo();
		m.mapAction();
		m.loopMap();
		m.loopRemoveMap();
		m.sortMapByKey();
	}
}

  

时间: 2024-10-28 20:35:44

java-测试开始map基本操作的相关文章

Java中的Map List Set等集合类

Map List Set等集合类: 一.概述 在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系: +Collection 这个接口extends自 --java.lang.Iterable接口 ├+List(接口 代表有序,可重复的集合.列表) │├ ArreyList     (Class 数组,随机访问,没有同步,线程不安全) │├ Vector        (Class  数组                   同步        线程全) │

[Java] 多个Map的性能比较(TreeMap、HashMap、ConcurrentSkipListMap)

比较Java原生的 3种Map的效率. 1.  TreeMap 2.  HashMap 3.  ConcurrentSkipListMap 结果: 模拟150W以内海量数据的插入和查找,通过增加和查找两方面的性能测试,结果如下: Map类型 插入 查找(在100W数据量中)   10W 50W 100W 150W 0-1W 0-25W 0-50W Concurrent SkipListMap 62 ms 227 ms 433 ms 689ms 7 ms 80 ms 119 ms HashMap

Java编程之Map中分拣思想。

题目:给定一个字符串,求出字符串中每一个单词在字符串中出现的次数 旨意:map的分拣思想. 每一个key的包装类,存放出现的次数 1 /** 2 * 作为包装类,用来存放英文单词,和该英文单词出现的次数 3 * @ClassName: Str 4 * @Description: TODO(这里用一句话描述这个类的作用) 5 * @author 尚晓飞 6 * @date 2014-7-30 下午6:57:29 7 * 8 */ 9 public class Str { 10 private St

java.lang.OutOfMemoryError:Map failed总结

常见的OOM是以下这几种:1.GC overhead limit exceeded2.Java Heap Space3.Unable to create new native thread4.PermGen Space5.Direct buffer memory6.request {} bytes for {}. Out of swap space?一直自认为不会有超过这个范围的OOM类型出现,没想到最近看到了一个新的OOM的类型,而这次OOM引发了一次严重的故障,整个排查过程是内部一个同事排查

javascript 实现java中的Map

javascript实现java中的Map,代码是在国外的一个网站上看到的(http://stackoverflow.com/questions/368280/javascript-hashmap-equivalent),自己稍作了修改,之前也看到过有人用2个数组实现了Map,但是我感觉效率比较低,现在这个我感觉效率还可以,自己做了下测试,代码如下: Map.js Java代码   function Map(linkItems) { this.current = undefined; this.

Java中Set Map List 的区别

java中set map list的区别: 都是集合接口 简要说明 set --其中的值不允许重复,无序的数据结构 list   --其中的值允许重复,因为其为有序的数据结构 map--成对的数据结构,健值必须具有唯一性(键不能同,否则值替换) List按对象进入的顺序保存对象,不做排序或编辑操作.Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List).Map同样对每个元素保存一份,但这是基于"键"的,Ma

Java 堆外Map工具

KV键值对存储大家都很熟悉了,Java 中的 map 都是在堆内存储,如果我们遇到一种情况是map特别大,每次GC我们不想释放这些空间,那么这一部分缓存数据又该如何处理呢?当然大家说可以使用第三方缓存组件:Redis,HBase,MongoDB,今天给大家多一种选择:堆外内存. 今天要给大家介绍的是一款使用堆外内存构建本地缓存行的工具:Chronicle-Map .官网上给出该工具的特性: 高吞吐量,低延迟,跨进程,持久键值存储: 堆外数据存储,延迟时间为微秒: 基于ConcurrentHash

js 定义像java一样的map方便取值

js 定义像java一样的map方便取值. 百度有位大神说"js对象本身就是一种Map结构",这真是一段让人欢天喜地的代码. <script> //定义一个全局map var map = {}; var key0 = '0'; var key1 = '1'; map[key0] = '0-真实报文'; map[key1] = '1-虚拟报文'; //row 获取这行的值 ,index 获取索引值 function testJsMap(key){ //如果遍历map for(

java RandomAccessFile类文件基本操作

RandomAccessFile类是java中仿C的文件操作方法,下面通过实例演示RandomAccessFile类对文件的基本操作,深入了解请查看Java API文档.(注:RandomAccessFile类大多不被采用) 上代码 import java.io.*; public class AccessFileDemo { public static void main(String[] args) { Student stu1=new Student("Zhang San",10