HashMap常用方法以及遍历排序方式

常用方法

  • map.containsKey()
  • map.put()
  • map1.equals(map2)

遍历方式

  •    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()){
    System.out.println(iterator.next());
    }

排序方式

  • 根据key排序(最好把要排序的设为key)

  •     //map对key排序(默认只能对key排序)
    @Test
    public void test1(){
    //普通方式
    // Map<String, String> map = new TreeMap<>(
    // new Comparator<String>() {
    // public int compare(String obj1, String obj2) {
    // //对key降序排序
    // return obj2.compareTo(obj1);
    // }
    // });
    //Lambda 表达式
    Map<String,String> map=new TreeMap<>((s1,s2)->{
    return s2.compareTo(s1);
    });
    map.put("d", "ddddd");
    map.put("b", "bbbbb");
    map.put("a", "aaaaa");
    map.put("c", "ccccc");
    Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();
    while (iterator.hasNext()){
    System.out.println(iterator.next());
    }
    }
  • 根据value排序

  •     //map对value排序
    //把TreeMap的EntrySet转换成list,然后使用Collections.sor排序
    @Test
    public void test2(){
    Map<String, String> map = new TreeMap<>();
    map.put("d", "ddddd");
    map.put("b", "bbbbb");
    map.put("a", "eeeee");
    map.put("c", "ccccc"); //这里将map.entrySet()转换成list
    List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
    //然后通过比较器来实现排序
    Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
    //升序排序
    public int compare(Map.Entry<String, String> o1,
    Map.Entry<String, String> o2) {
    return o1.getValue().compareTo(o2.getValue());
    }
    }); Iterator<Map.Entry<String, String>> iterator = list.iterator();
    while (iterator.hasNext()){
    System.out.println(iterator.next());
    }
    }

Leetcode242-有效字母异位词

  • 给定两个字符串 *s**t* ,编写一个函数来判断 *t* 是否是 *s* 的字母异位词。
  • 注意:*s**t* 中每个字符出现的次数都相同,则称 *s**t* 互为字母异位
  • 输入: s = "anagram", t = "nagaram"
  • 输出: true
    public boolean isAnagram(String s, String t) {
if(s.length()!=t.length()){
return false;
} Map map1=new HashMap<Character,Integer>();
Map map2=new HashMap<Character,Integer>(); for(int i=0;i<s.length();i++){
if(!map1.containsKey(s.charAt(i))){
map1.put(s.charAt(i),1);
}else{
map1.put(s.charAt(i),(Integer)map1.get(s.charAt(i))+1);
}
} for(int i=0;i<t.length();i++){
if(!map2.containsKey(t.charAt(i))){
map2.put(t.charAt(i),1);
}else{
map2.put(t.charAt(i),(Integer)map2.get(t.charAt(i))+1);
}
} return map1.equals(map2);
}

Leetcode1-两数之和

  • 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。
  • 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。
  • 你可以按任意顺序返回答案。
  • 输入:nums = [2,7,11,15], target = 9
  • 输出:[0,1]
    public int[] twoSum(int[] nums, int target) {
Map<Integer,Integer> map=new HashMap<>();
int[] res=new int[2];
for(int i=0;i<nums.length;i++){
if(map.containsKey(target-nums[i])){
res[0]=map.get(target-nums[i]);//get得到value所以这里把下标作为value
res[1]=i;
break;
}else{
map.put(nums[i],i);
}
}
return res;
}

Leetcode383-赎金信

  • 给你两个字符串:ransomNotemagazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。
  • 如果可以,返回 true ;否则返回 false
  • magazine 中的每个字符只能在 ransomNote 中使用一次。
  • 输入:ransomNote = "a", magazine = "b"
  • 输出:false
    public boolean canConstruct(String ransomNote, String magazine) {

            if(ransomNote.length()>magazine.length()){
return false;
} Map map=new HashMap<Character,Integer>(); for(int i=0;i<magazine.length();i++){
char temp=magazine.charAt(i);
if(!map.containsKey(temp)){
map.put(temp,1);
}else{
map.put(temp,(Integer)map.get(temp)+1);
}
} for(int j=0;j<ransomNote.length();j++){
char temp=ransomNote.charAt(j);
if(map.containsKey(temp)){
map.put(temp,(Integer)map.get(temp)-1);
if((Integer)map.get(temp)<0){
return false;
}
}else{
return false;
}
} return true;
}

Leetcode1/242/383-HashMap常用方法以及遍历排序方式的更多相关文章

  1. [Java]HashMap的两种排序方式

    先将 Map 中的 key 和 value 全部取出来封装成 JavaBea 数组,再将这个数组排序,排序完成后,重新写回 Map 中,写回时采用 LinkedHashMap 可以保证迭代的顺序. 下 ...

  2. HashMap的两种排序方式

    Map<String, Integer> map = new HashMap<String, Integer>();map.put("d", 2);map. ...

  3. Java中关于HashMap的元素遍历的顺序问题

    Java中关于HashMap的元素遍历的顺序问题 今天在使用如下的方式遍历HashMap里面的元素时 1 for (Entry<String, String> entry : hashMa ...

  4. HashMap 集合的遍历

    HashMap 集合的遍历: 两种方式遍历HashMap: //集合hashMap的遍历: //方式一: @Test public void testMethod1(){ HashMap<Str ...

  5. HashMap , TreeMap , TreeMap 默认排序

    Java代码  import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java. ...

  6. hashmap 的边遍历边存储

    PS: Hashmap 的一边遍历边存储,可解决例如两数之和. 无重复最长子串问题等,代码为cpp格式. 以无重复最长子串为例. class Solution { public: int length ...

  7. ArrayList集合概述和基本使用和ArrayList集合的常用方法和遍历

    什么是ArrayList类 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大 ...

  8. Java基础-数组常见排序方式

    Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...

  9. TreeSet的两种排序方式,含Comparable、Comparator

    1.排序的引入 由于TreeSet可以实现对元素按照某种规则进行排序,例如下面的例子 public class TreeSetDemo { public static void main(String ...

随机推荐

  1. 【spring源码系列】之【Bean的销毁】

    以"冬奥之光,多彩冰灯"为主题的第四十一届全国专业冰雕比赛在冰城哈尔滨市进入第二天,60名冰雕高手在哈尔滨冰灯艺术游园会园区展开激烈的竞技比拼. 冰雕艺术 1. 概述 Bean的销 ...

  2. Spring注解简析

    JAVA 元注解 @Documented @Inherited @Retention @Target @Repeatable @Native 在java.lang.annotation包下,除了@Na ...

  3. Android 应用框架层 SQLite 源码分析

    概述   Android 在应用框架层为开发者提供了 SQLite 相关操作接口,其归属于android.database.sqlite包底下,主要包含SQLiteProgram, SQLiteDat ...

  4. js-表格

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. ASP.NET Core 6框架揭秘实例演示[24]:中间件的多种定义方式

    ASP.NET Core的请求处理管道由一个服务器和一组中间件组成,位于 "龙头" 的服务器负责请求的监听.接收.分发和最终的响应,针对请求的处理由后续的中间件来完成.中间件最终体 ...

  6. Redis 中的 set 和 sorted set 如何使用,源码实现分析

    set 和 sorted set 前言 set 常见命令 set 的使用场景 看下源码实现 insert dict sorted set 常见的命令 使用场景 分析下源码实现 ZADD ZRANGE ...

  7. 开启路由器的TCP拦截

    TCP拦截即TCP intercept,大多数的路由器平台都引用了该功能,其主要作用就是防止SYN泛洪攻击.SYN攻击利用的是TCP的三次握手机制,攻击端利用伪造的IP地址向被攻击端发出请求,而被攻击 ...

  8. CodeForces Round #760 (Div. 3)

    A. Polycarp and Sums of Subsequences 题目大意: 给七个不降序的数字,为三个数组合后得到的七种答案,求原来的三个数是哪些 思路: 由样例不难发现,第一个一定是三个数 ...

  9. Python通过snap7库与西门子S7-1200建立S7通信,读写存储器数据,顺便写个流水灯

    1.snap7 简介 snap7 是一个基于以太网与S7系列的西门子PLC通讯的开源库. 支持包括S7系列的S7-200.S7-200 Smart.S7-300.S7-400.S7-1200以及S7- ...

  10. JavaScript 里的 'this' 的一般解释

    本文旨在帮助自己和大家理解 JS 里的 this, 翻译.整理并改写自本人关注的一个博主 Dmitri Pavlutin,原文链接如下: https://dmitripavlutin.com/gent ...