HashMap操作

有段时间没写java代码,竟然有些生疏,整理。

1、HashMap操作

		Map<String, String> map = new HashMap();

		map.put("1", "a");
		map.put("2", "b");
		map.put("3", "c");
		// 遍历map的第一种方式
		Set<Map.Entry<String, String>> entry = map.entrySet();
		Iterator<Map.Entry<String, String>> ite = entry.iterator();
		while (ite.hasNext()) {
			Map.Entry<String, String> en = ite.next();
			System.out.println(en.getKey() + " --> " + en.getValue());
		}
		// 遍历map的第二种方式
		for (Map.Entry<String, String> en : map.entrySet()) {
			System.out.println(en.getKey() + " --> " + en.getValue());
		}

		// 获得所有key的集合
		Set<String> keys = map.keySet();
		Iterator<String> it = keys.iterator(); // 获得key的迭代器
		while (it.hasNext()) {
			String key = it.next(); // 迭代器是key的迭代器
		}
		// 获得所有的值values-->返回值为List
		for (String value : map.values()) {
			System.out.println(value);
		}
		// 该方法不正确,会报错
		// ArrayList<String> ls= (ArrayList<String>) map.values();
		// 如下正解
		List<String> ls = new ArrayList<String>(map.values());
		//常用方法
		System.out.println(map.containsKey("1"));//是否包含键
		System.out.println(map.containsValue("a"));//是否包含值
		Map<String, String> map2 = new HashMap(map);/2、

2、将一个set转化为List的两种方式

		 //构造一个set
		 Set<String> set=new HashSet<>();
		 set.add("z");
		 set.add("z");
		 set.add("a");
		 set.add("f");
		 //方法一
		 List<String> ll=new ArrayList<>();
		 if(set!=null && !set.isEmpty()) {
			 for(Iterator<String> iterator=set.iterator();iterator.hasNext();) {
				 String data=iterator.next();
				 if(data!=null) {
					 ll.add(data);
				 }
			 }
		 }
		 //方法二:将一个set转为List
		 List<String> ls=new ArrayList<>(set);
		 System.out.println(ls);

3、List排序与二分查找

	      String aggAlgo = "SRC,DST;RULE group";  
	      //数组转集合
	      List<String> ls = new ArrayList<>(Arrays.asList(aggAlgo.toLowerCase().split(",|;| ")));// split的切割可以根据多个条件进行切割
	      //集合->数组 
	      //String arr[] = ls.toArray(new String[ls.size()]);  
	      Collections.sort(ls);// 自然顺序排序  
	      //Collections.reverse(ls); //降序  
	      int num = Collections.binarySearch(ls, "rule");// 二分查找  
	      List<String> ls2 = new ArrayList<>(ls);// 将list赋值为另一个list  

4、List去重

方法一:使用stream流

List lst1=ls.stream().distinct().collect(Collectors.toList());
方法二:使用利用set

List lst2=new ArrayList(new HashSet(ls));
用到了List的构造方法: List<String> ls=new ArrayList<>(set);
5、获得两个List中差集

		// 集合去重  
		List<String> ls1 = new ArrayList<>();  
		ls1.add("a");  
		ls1.add("b");  
		ls1.add("c");  
		  
		List<String> ls2 = new ArrayList<>();  
		ls2.add("a");  
		ls2.add("b");  
		ls2.add("c");  
		ls2.add("d");  
		// 是否存在ls1完全包含ls2的情况  
		boolean exist = ls1.containsAll(ls2);  
		if (!exist) {  
		    ls2.removeAll(ls1);  
		}  
		System.out.println(ls1);//a b c
		System.out.println(ls2);// d  






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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值