J2EE快速入门之集合框架【03】

目录

一、Map集合

1、HashMap

1)特点

2)遍历方式

3)HashMap与Hashtable之间的区别

2、TreeMap

1)以键排序

2)以值排序


一、Map集合

           Map接口提供了一种映射关系,其中的内容都是以键 key 值 value 对的形式存储的

1、HashMap

1)特点

          无序、以键值对的形式添加元素,键不能重复,值可以重复

        //Map
		//特点:无序,以键值对的形式存储数据,键唯一,值不唯一
		Map<String,Object> map=new Hashtable<>();
		map.put("name", "糯米");
		map.put("sex", "gril");
		map.put("age",18);
		
		//当键相同时,值被覆盖
		map.put("name", "ww");
		map.put("score", 21);
		System.out.println(map);

结果显示:

{age=18, name=ww, sex=gril, score=21}

2)遍历方式

(1)遍历所有的键 keys

       // 遍历所有的键 keys
		System.out.println("---------遍历所有的键 keys--------");
		Set<String> keys = map.keySet();
		for (String k : keys) {
			System.out.println(k);
		}

结果显示:

 

(2)遍历所有的值 values

       // 遍历所有的值 values
		System.out.println("---------遍历所有的值 values--------");
		Collection<Object> values = map.values();
		for (Object obj : values) {
			System.out.println(obj);
		}

结果显示:

 

(3)遍历所有的键值对

       // 遍历所有的键值对
		System.out.println("---------遍历所有的键值对①--------");
		Set<Entry<String,Object>> entrySet = map.entrySet();
		for (Entry<String, Object> entry : entrySet) {
			System.out.println("key="+entry.getKey()+",value="+entry.getValue());
		}
		System.out.println("---------遍历所有的键值对②--------");
		entrySet.forEach(e->{
			System.out.println(e.getKey()+"="+e.getValue());
		});

结果显示:

 3)HashMap与Hashtable之间的区别

HashMap 和 Hashtable 的关系完全类似于 ArrayList 和 Vector 的关系

HashTable是线性安全的,效率高 ,但不允许使用null作为key和value,否则会引发异常,

HashMap是线性不安全的,但允许使用null作为key和value

2、TreeMap

1)以键排序

(1)默认升序

		//  默认按照键的升序进行排序操作
		Map<String,Object> map=new TreeMap<>();
		map.put("zs", 100);
		map.put("ls", 88);
		map.put("ww", 120);
		System.out.println(map);

结果显示:

       {ls=88, ww=120, zs=100}

(2)降序

         利用Comparator调用降序的方法

        // Comparator.reverseOrder()实现降序排序
		Map<String,Object> map1=new TreeMap<>(Comparator.reverseOrder());
		map1.put("zs", 100);
		map1.put("ls", 88);
		map1.put("ww", 120);
		System.out.println(map1);

结果显示:

    {zs=100, ww=120, ls=88}

2)以值排序

       Collections:工具类,提供一组静态方法的集合框架帮助类

利用此类的方法实现以值排序

		//以值排序
		//获取键值对
		Set<Entry<String,Object>> entrySet = map.entrySet();
		//将键值对方式转换成List集合
		List<Map.Entry<String, Object>> lst=new ArrayList<>(entrySet);

		//Collection:是集合框架的顶级接口
		//Collections:是集合框架中的帮助类
		Collections.sort(lst,new Comparator<Entry<String, Object>>() {
			@Override
			public int compare(Entry<String, Object> a,
					Entry<String, Object> b) {
				return -(a.getValue().hashCode()-b.getValue().hashCode());
			}
		});
		
		lst.forEach(System.out::println);

结果显示:

   ww=120
   zs=100
   ls=88

    Arrays:工具类,提供了一组静态方法操作数组

       //Arrays:工具类,提供了一组静态方法操作数组
		String str="1,2,3,4,5,6,7";
		String[] strings = str.split(",");
		//将数组转换成集合
		List<String> asList = Arrays.asList(str.split(","));
		System.out.println(asList);
		//将数组通过Arrays.toString方式转换成字符串
		String string = Arrays.toString(strings);
		System.out.println(string);

结果显示:

    [1, 2, 3, 4, 5, 6, 7]
    [1, 2, 3, 4, 5, 6, 7]

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ning_ning_03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值