集合框架(map)

1. Map
  1.1 特点:无序、以键值对的形式添加元素,键不能重复,值可以重复
           它没有继承Collection接口
  1.2 遍历
    1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)
    1.2.2 先取出保存所有Entry的Set,再遍历此Set即可 (重要点)

2.HashMap与HashTable之间的区别

 
  同步既排队  线程安全的     hashtable  键不可以为null,值也不能为null
  异步        非安全的   hashmap  键可以为null,值也可以为null

  
3. 其它 


   3.1 Collections:工具类,提供一组静态方法操作Collection集合
   3.2 Arrays:工具类,提供了一组静态方法操作数组

典例:
                map集合遍历的两种方式

1.用keySet()实现遍历map集合:

package com.zkin.ds;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Dmoe01 {

	public static void main(String[] args) {
		Map<String ,Object>map=new HashMap<String ,Object>();
		map.put("4", "d");
		map.put("1", "a");
		map.put("2", "b");
		map.put("3", "c");
		//map集合的遍历方式1.获取map集合的所有key来获取value
		Set<String> keySet = map.keySet();
		for (String key : keySet) {
			System.out.println(key);
			Object value = map.get(key);
			System.out.println(key+"="+value);
			
		}
		map.put("3", "c1");
		map.put("3", "a");
		
		System.out.println("---------------------------------");
		

		}
}

 2.使用entrySet()方法遍历,map集合

                 

package com.zkin.ds;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class Dmoe01 {

	public static void main(String[] args) {
		Map<String ,Object>map=new HashMap<String ,Object>();
		map.put("4", "d");
		map.put("1", "a");
		map.put("2", "b");
		map.put("3", "c");
	
		
		
		//遍历map方法2
		Set<Entry<String, Object>> entrySet = map.entrySet();
		for (Entry<String, Object> entry : entrySet) {
			System.out.println(entry);
			System.out.println(entry.getKey());
			System.out.println(entry.getValue());
		} 
//		Collection<Object> values = map.values();
//		
//		for (Object object : values) {
//			System.out.println(object);
//		}
//		for (String key : keySet) {
//			System.out.println(key);
//			Object value = map.get(key);
//			System.out.println(key+"="+value);
//			
//		}
		}
}

                建议使用entrySet()方法

因为这里打印出来是比较方便的但是keySet()如果代码量大需要重新打印较为麻烦 

案例:

Map集合3层嵌套使用(2Map+1List) 

Map<String ,Map>map=new HashMap<String ,Map>();
		Map<String ,List>map1=new HashMap<String ,List>();
		List<Student> list= new ArrayList<Student>();
		list.add(new Student(" 张晓东", 90));
		list.add(new Student(" 张晓西", 75));
		List<Student> list1= new ArrayList<Student>();
		list1.add(new Student(" 张晓北", 80));
		list1.add(new Student(" 张晓南", 82));
		map1.put("T110", list);
		map1.put("T111", list1);
		map.put("卓京初中部", map1);
//		List<Student>
//		Map<String,List>
//		Map<String,Map>
//

//		卓京高中部
//		   T206
//		      张三  90
//		      李四  100
//		   T222
//		      王五  70
//		      小六  100 
//		   T208
//		      小八  70
//		      小九  100 
		Map<String ,List>map2=new HashMap<String ,List>();
		List<Student> list3= new ArrayList<Student>();
		list3.add(new Student(" 张三", 90));
		list3.add(new Student(" 李四", 100));
		List<Student> list4= new ArrayList<Student>();
		list4.add(new Student(" 王五", 70));
		list4.add(new Student(" 小六", 100));
		List<Student> list5= new ArrayList<Student>();
		list5.add(new Student(" 小八", 70));
		list5.add(new Student(" 小九", 100));
		map2.put("T206", list3);
		map2.put("T222", list4);
		map2.put("T208", list4);
		map.put("卓京高中部", map2);
//		卓京大学部
//		   T230
//		      可乐  60
//		      雪碧  50
//		   T231
//		      哇哈哈 90
//		      老干妈 80
		Map<String ,List>map3=new HashMap<String ,List>();
		List<Student> list6= new ArrayList<Student>();
		list6.add(new Student("可乐", 60));
		list6.add(new Student(" 雪碧", 50));
		List<Student> list7= new ArrayList<Student>();
		list7.add(new Student(" 哈哈哈", 90));
		list7.add(new Student(" 老干妈", 80));
		map3.put("T230", list6);
		map3.put("T231", list7);
		map.put("卓京大学部", map3);

		Set<String> keySet = map.keySet();
		for (String key : keySet) {
			System.out.println(key);
			Object value = map.get(key);
			System.out.println(key+"="+value);
			
		}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值