`
Luob.
  • 浏览: 1588641 次
  • 来自: 上海
社区版块
存档分类
最新评论

java之16天 Map集合 (二)

    博客分类:
  • Java
阅读更多
Map练习

/**练习
 * "sdfzesacwedcvde"获取该字符串中字母出现的次数
 * 希望打印结果为a(1)c(2)....
 * 
 * 通过 结果发现,没一个字母都有对应的次数.
 * 说明字母和次数之间都有映射关系
 * 
 * 注意了.当发现有映射关系时,可以选择map集合.
 * 因为Map集合中存放的就是映射关系.
 * 
 * 什么时候使用Map集合呢?
 * 但数据之间存在这种关系时,就要先想map集合.
 *
 * 思路:
 *  1.将字符串转换成字符数组,应要对每个字母进行操作
 *  2.定义Map容器,因为答应结果的字母有顺序,所以使用TreeMap集合
 *  3.遍历字符数组
 *     将每个字母作为键去查Map集合,如果返回null,将该祖母和1存入到map集合中
 *     如果返回不是null,说明该字母在map集合中不存在并有对应次数
 *     那么获取该此数据进行自增,然后键该字母和自增后的次数存入到map集合中,覆盖调用原来键所对应的值
 *   
 *  4.将map集合中的数据变成指定格式的字符串返回
 *   
 */
public class MapDemo4 {

	public static void main(String[] args) {
		
		System.out.println(charCount("aabx,.op.po./[fcdadsfdefa"));
	}
	
	public static String charCount(String str){
		char[] chs=str.toCharArray();
		TreeMap<Character,Integer> tm=new TreeMap<Character,Integer>();
		Integer value=0;
		for(int x=0;x<chs.length;x++){
			//不统计非法字符
			if(!(chs[x]>='a' && chs[x]<='z' || chs[x]>='A' && chs[x]<='X'))
				continue;
			
			value=tm.get(chs[x]);
			if(value==null)
				value=0;
			value++;
			tm.put(chs[x], value);
			value=0;
		}
		Set<Map.Entry<Character, Integer>> sme=tm.entrySet();
		StringBuffer sb=new StringBuffer();
		Iterator<Map.Entry<Character,Integer>> it=sme.iterator();
		while(it.hasNext()){
			Map.Entry<Character, Integer> me=it.next();
			sb.append(me.getKey()+"("+me.getValue()+")");
		}
		
		return sb.toString();
	}

}


Map扩展


/**
 * Map扩展
 * map集合被使用,是因为具备映射关系
 * 
 * "预热帮" "01" "张三"
 * "预热帮" "02" "李四"
 * 
 * "就业办" "01" "王武"
 * "就业办" "02" "招六"
 * 
 */
class Students{
	private String id;
	private String name;
	Students(String id,String name){
		this.id=id;
		this.name=name;
	}
	public String getId(){
		return id;
	}
	
	public String getName(){
		return name;
	}
}

public class MapDemo5 {

	
	public static void main(String[] args) {
		method();
		System.out.println("================");
		method1();
	}

	public static void method1(){
		Map<String,List<Students>> school=new HashMap<String,List<Students>>();
		List<Students> yureban=new ArrayList<Students>();
		yureban.add(new Students("01","张三"));
		yureban.add(new Students("02","李四"));

		List<Students> jiuyeban=new ArrayList<Students>();
		yureban.add(new Students("01","王武"));
		yureban.add(new Students("02","招六"));

		school.put("yureban", yureban);
		school.put("jiuyeban", jiuyeban);
		
		
		Set<String> keySet=school.keySet();
		Iterator<String> it=keySet.iterator();
		while(it.hasNext()){
			String key=it.next();
			List<Students> list=school.get(key);
			getInfo(list);
		}
	}
	
	public static void getInfo(List<Students> list){
		
		Iterator<Students> it=list.iterator();
		while(it.hasNext()){
			Students str=it.next();
			System.out.println(str.getId()+":"+str.getName());
		}
		
	}
	public static void method(){
		Map<String,HashMap<String,String>> school=new HashMap<String,HashMap<String,String>>();  
		
		HashMap<String,String> yureban=new HashMap<String,String>();
		HashMap<String,String> jiuyeban=new HashMap<String,String>();
		yureban.put("01", "张三");
		yureban.put("02", "李四");
		
		jiuyeban.put("01", "王武");
		jiuyeban.put("02", "招六");
		
		school.put("yureban", yureban);
		school.put("jiuyeban", jiuyeban);
		
		getStuInfo(yureban);
		getStuInfo(jiuyeban);
		
		Set<String> keySet=school.keySet();
		
		Iterator<String> it=keySet.iterator();
		while(it.hasNext()){
			String key=it.next();
			System.out.println(key+":");
			HashMap<String,String> hm=school.get(key);
			getStuInfo(hm);
		}
		
		
	}
	
	public static void getStuInfo(HashMap<String,String> room){
		Iterator<String> it=room.keySet().iterator();
		while(it.hasNext()){
			String key=it.next();
			String value=room.get(key);
			System.out.println(key+":"+value);
		}
	}
}

0
1
分享到:
评论
1 楼 放羊的boy 2013-05-05  
学习了   

相关推荐

    java 15天教程下载,可供java初学者学习使用

    15 第15天Map集合.docx 16 第16天IO流.docx 17 第17天字节流.docx 18 线程.docx 19 网络编程.docx 2 拓薪教育-java基础语法.docx 3 J2SE程序的流程控制.docx 5 第5天面向对象.docx 6 static静态关键字和单例模式....

    java基础18天Typora笔记

    Java基础18天 Typora笔记概述 这是一份专为Java初学者准备的学习资源,由魔乐科技提供,旨在帮助用户在18天内建立起坚实的Java编程基础。Typora是一款简洁而高效的Markdown编辑器,使得笔记整理和阅读更加便捷。...

    21天学通Java.第7版-中文版-良心积分价

    9. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们各自的特点和应用场景,学习泛型、迭代器和并发集合的使用。 10. **多线程**:...

    java毕向东源代码16-25天

    这期间,学员将通过每一天的学习和编码实践,掌握从第16天到第25天的Java高级特性,如并发编程、集合框架的深入使用、IO流、网络编程、异常处理、设计模式等关键知识点。 【标签】"java-毕向东" 显示了课程的专业...

    21天学java源代码

    8. **集合框架**:Java集合框架包括List、Set、Queue和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,它们提供了数据组织和操作的多种方式。 9. **多线程**:Java内置了对多线程的支持,学习者...

    Java 21天学通java

    7. **集合框架**:Java集合框架包括接口(如List、Set、Map)和实现类(如ArrayList、LinkedList、HashSet、HashMap等),是存储和管理对象的重要工具。 8. **输入/输出流**:Java的I/O流用于处理数据的输入和输出...

    达内java课程-java核心编程10天

    ### 达内Java课程——Java核心编程10天知识点详解 #### 散列表Map - **概念**: 散列表是一种非常高效的数据结构,它通过特定的哈希函数将键值映射到表的一个位置来访问记录,这使得查找操作能在平均时间复杂度为O(1...

    18天java学习之经典笔记

    "18天Java学习之经典笔记"是一份专为快速掌握Java基础知识而设计的学习资料,适用于那些希望在短时间内复习、备考或者准备面试的人员。这份笔记涵盖了Java的核心概念,通过18天的学习计划,帮助读者逐步理解并熟练...

    21天学java培训笔记和代码

    Java支持多线程编程,第15天至第16天的学习内容可能涵盖线程的创建、同步机制(如synchronized关键字、wait()、notify()等)、线程池的使用,这些都是并发编程的关键。 七、反射与注解 第17天可能涉及Java的反射...

    Java电子教案(21天学通JAVA)

    10. **集合框架**:Java集合框架包括List、Set和Map接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的区别和应用场景,以及泛型的使用。 11. **多线程**:Java提供了Thread类和Runnable接口...

    Java成神之路,Java基础

    12. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类。理解它们的特性和使用场景。 13. **输入/输出流**:学习如何使用InputStream、...

    21 天 学通 Java

    14. **集合框架**:Java集合框架包括List、Set、Queue和Map等接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,用于存储和管理对象。 15. **输入输出流**:Java的I/O流系统支持读写文件、网络通信等...

    java(18天)笔记,txt文件

    10. **Day17 - 集合框架**: 了解Java集合框架,包括List, Set, Queue接口及其实现类,如ArrayList, LinkedList, HashSet, TreeSet, Stack等,以及Map接口和HashMap, TreeMap等。 11. **Day18 - 多线程**: 掌握Java...

    21天学通Java-由浅入深

    第一篇 基础篇 第1章 Java简介(精彩视频:33分钟) 21 1.1 Java的平台简介 21 1.2 安装工具包 22 1.2.1 下载JDK 22 1.2.2 安装JDK 24 1.2.3 查看与设置环境变量 25 1.2.4 JDK常用命令 27 1.2.5 Java各个目录含义 28...

    2014年Java最全面试题以及答案.

    总结以上各点,可以看出这些知识点涵盖了Java编程语言的多个重要方面,包括基础语法、面向对象编程、异常处理、集合框架、内存管理、多线程等,这些内容对于Java程序员掌握和应用Java语言都是至关重要的。

    Java 2编程21天自学通(2)

    15. **Java集合框架**:深入学习List、Set、Map接口及其实现类,如ArrayList、LinkedList、HashSet、HashMap等,以及它们的适用场景。 16. **Java IO/NIO**:了解传统的IO模型和非阻塞IO模型(NIO),以及Java 7...

    Java后端面试题

    49. **List、Set、Map与Collection的关系**:`List`、`Set`继承自`Collection`接口,`Map`不是`Collection`的子接口。 50. **面向对象的特征**:封装、继承、多态。 51. **String是最基本的数据类型吗**:不是,它...

Global site tag (gtag.js) - Google Analytics