Leetcode1/242/383-HashMap常用方法以及遍历排序方式
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-赎金信
- 给你两个字符串:
ransomNote和magazine,判断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常用方法以及遍历排序方式的更多相关文章
- [Java]HashMap的两种排序方式
先将 Map 中的 key 和 value 全部取出来封装成 JavaBea 数组,再将这个数组排序,排序完成后,重新写回 Map 中,写回时采用 LinkedHashMap 可以保证迭代的顺序. 下 ...
- HashMap的两种排序方式
Map<String, Integer> map = new HashMap<String, Integer>();map.put("d", 2);map. ...
- Java中关于HashMap的元素遍历的顺序问题
Java中关于HashMap的元素遍历的顺序问题 今天在使用如下的方式遍历HashMap里面的元素时 1 for (Entry<String, String> entry : hashMa ...
- HashMap 集合的遍历
HashMap 集合的遍历: 两种方式遍历HashMap: //集合hashMap的遍历: //方式一: @Test public void testMethod1(){ HashMap<Str ...
- HashMap , TreeMap , TreeMap 默认排序
Java代码 import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java. ...
- hashmap 的边遍历边存储
PS: Hashmap 的一边遍历边存储,可解决例如两数之和. 无重复最长子串问题等,代码为cpp格式. 以无重复最长子串为例. class Solution { public: int length ...
- ArrayList集合概述和基本使用和ArrayList集合的常用方法和遍历
什么是ArrayList类 java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素.此类提供一些方法来操作内部存储 的元素. ArrayList 中可不断添加元素,其大 ...
- Java基础-数组常见排序方式
Java基础-数组常见排序方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 数据的排序一般都是生序排序,即元素从小到大排列.常见的有两种排序方式:选择排序和冒泡排序.选择排序的特 ...
- TreeSet的两种排序方式,含Comparable、Comparator
1.排序的引入 由于TreeSet可以实现对元素按照某种规则进行排序,例如下面的例子 public class TreeSetDemo { public static void main(String ...
随机推荐
- App测试如何进行?手机app测试要点
手机APP测试,主要针对的是android和ios两大主流操作系统,主要考虑的就是功能性.兼容性.稳定性.易用性(也就是人机交互).性能. 手机APP测试前的准备: 1.使用同类型的产品,不仅仅是使用 ...
- 机器学习之主成分分析(PCA)
import numpy as np #(1)零均值化def zeroMean(dataMat): meanVal=np.mean(dataMat,axis=0) newData =dataMat - ...
- Bellman-Ford算法 求有边数限制的最短路
这个算法也是紧承我们之前讲过的关于图论的内容,我们在前面分析图的时候说过了对于不同的图论问题,我们会有不同的求解方法,那么这里我们讲到Bellman-Ford算法是用于解决有边数限制的求解最短路问题. ...
- mybatis连接sql
mysql6以上 com.mysql.cj.jdbc.Driver
- 张高兴的 Entity Framework Core 即学即用:(一)创建第一个 EF Core 应用
写在前面 Entity Framework Core (EF Core) 是 .NET 平台流行的对象关系映射(ORM)框架.虽然 .NET 平台中 ORM 框架有很多,比如 Dapper.NHibe ...
- Java基础——类与接口
一.类与接口的关系 1.类与类的关系 继承关系,只能单继承,不能多继承:但是可以多层继承 2.类与接口的关系 实现关系,可以单实现,也可以多实现,还可以继承一个类的同时实现多个接口 3.接口与接口的关 ...
- NoSQL:Redis缓存、雪崩、击穿、穿透
Redis介绍 Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库 ...
- python练习册 每天一个小程序 第0000题
PIL库学习链接:http://blog.csdn.net/column/details/pythonpil.html?&page=1 1 #-*-coding:utf-8-*- 2 __au ...
- 【Vulnhub练习】Billu_b0x
靶机说明 虚拟机难度中等,使用ubuntu(32位),其他软件包有: PHP apache MySQL 目标 Boot to root:从Web应用程序进入虚拟机,并获得root权限. 运行环境 靶机 ...
- java实现稀疏矩阵的压缩与解压
任务要求 把棋盘当作一个稀疏矩阵,0表示没棋,1表示黑棋,2表示蓝棋. 把该稀疏矩阵压缩以三元组形式表示并以文件形式保存,再写另一个程序读取文件中的信息把压缩后的三元组还原成原来的稀疏矩阵. 其中三元 ...