您现在的位置是:主页 > news > 常州知名网站公司/浙江百度推广开户
常州知名网站公司/浙江百度推广开户
admin2025/6/4 16:05:51【news】
简介常州知名网站公司,浙江百度推广开户,房屋设计软件app哪个好,统战部门户网站建设情况目录 一、 字符串String 与 字符数组char 之间的相互转化 字符串String 与数字int n 之间的相互转化 字符char 与 数字int n 之间的相互转化 整数Int类型与Integer之间的相互转化 java List、int[] 与Integer[] 之间进行的相互转化 二、String类型 和 StringBuilder类型 之…
目录
一、 字符串String 与 字符数组char 之间的相互转化
字符串String 与数字int n 之间的相互转化
字符char 与 数字int n 之间的相互转化
整数Int类型与Integer之间的相互转化
java List、int[] 与Integer[] 之间进行的相互转化
二、String类型 和 StringBuilder类型 之间的相互转化,在字符后面添加新的字符串
三、HashMap实现 “label”:"value"的映射,也就是键值对的映射。下面是hashmap的常用的函数。
四、计算字符串、数组的长度,单独取出字符串中的某个字符
五、判断基本类型数据是否超过最大值最小值
实现判别int类型的整数是否溢出(上溢出、下溢出)
六、java.lang.Math常用方法:
七、Array数组初始化、对数组进行的求最大值、最小值、平均值、总和操作
八、String字符串常用函数
九、StringBulider常用函数
十、Arrays 类
十一、Map(TreeMap、HashMap)实现按key值或value值排序
一、 字符串String 与 字符数组char 之间的相互转化
char[] c={'A','G','C','T'};String s=String.valueOf(c); //使用String.valueOf()将字符数组转换成字符串System.out.println("This is : "+s); //输出 This is : AGCTString s1="AGCT";char[] c1=s1.toCharArray(); //使用.toCharArray()将字符串转换成字符数组for (int i=0;i<s1.length();i++){System.out.println("This s[i]:"+i+"--"+c1[i]);}
// This s[i]:0--A
// This s[i]:1--G
// This s[i]:2--C
// This s[i]:3--T
字符串String 与数字int n 之间的相互转化
int i = 12345;//方法1: 使用String类的静态方法valueOfString str = String.valueOf(i);System.out.println(str.equals("12345")); // 输出true//方法2: 先把基本类型装箱为对象,然后调用对象的toString Integer it = i;String str2 = it.toString();System.out.println(str2.equals("12345")); // 输出true// 调用Integer的静态方法parseIntString str3 = "999";int i2= Integer.parseInt(str3);System.out.println(i2 == 999); // 输出true
字符char 与 数字int n 之间的相互转化
//char -> intchar numChar = '9';// 方法一:借助Character.getNumericValue()int num = Character.getNumericValue(numChar);System.out.println(num == 9); // 输出true// 方法二 :简单方法int num1 = numChar - '0';System.out.println(num == 9); // 输出true// int -> charint num2 = 8;char numChar2 = (char)(num2 + '0');System.out.println(numChar2 == '8');// 输出true
整数Int类型与Integer之间的相互转化
// int到Integer:int a = 2;Integer A = new Integer(a);System.out.println(A.getClass().toString()); //输出class java.lang.Integer// Integer到int:Integer B=new Integer(5);int b = B.intValue();System.out.println(b); // 输出5
java List、int[] 与Integer[] 之间进行的相互转化
int[] nums = {1,2,3,4};// int[]转换成List<Integer>// Arrays.stream(data): int[] -> IntStream// IntStream.boxed(): IntStream -> Stream<Integer>// Stream<Integer>.collect(Collectors.toList()): Stream<Integer> -> List<Integer>List<Integer> list1 = Arrays.stream(nums).boxed().collect(Collectors.toList());System.out.println(list1.getClass()); //class java.util.ArrayListSystem.out.println(list1);//[1, 2, 3, 4]// int[]转换成Integer[]Integer[] arr1 = Arrays.stream(nums).boxed().toArray(Integer[]::new);System.out.println(arr1.getClass()); //class [Ljava.lang.Integer;for(int i=0; i<arr1.length; i++){System.out.println(arr1[i]); //1,2,3,4}// List<Integer>转换成int[]// Collection<Integer>.stream(): Collection<Integer> -> Stream<Integer>// Stream<Integer>.mapToInt(Integer::intValue): Stream<Integer> -> IntStream// IntStream.toArray(): IntStream -> int[]int[] arr2 = list1.stream().mapToInt(Integer::intValue).toArray();System.out.println(arr2.getClass());//class [ISystem.out.println(arr2[2]);//3// List<Integer>转换成Integer[]Integer[] arr3 = list1.toArray(new Integer[0]);System.out.println(arr3.getClass());//class [Ljava.lang.Integer;System.out.println(arr3[2]);//3// Integer[]转换成List<Integer>List<Integer> list2 = Arrays.asList(arr3);System.out.println(list2.getClass());//class java.util.Arrays$ArrayListSystem.out.println(list2);//[1, 2, 3, 4]// Integer[]转换成int[]int[] arr4 = Arrays.stream(arr1).mapToInt(Integer::valueOf).toArray();System.out.println(arr4.getClass());//class [ISystem.out.println(arr4[2]);//2
二、String类型 和 StringBuilder类型 之间的相互转化,在字符后面添加新的字符串
String str="A01";System.out.println("str:"+str);//输出:str:A01StringBuilder sb=new StringBuilder(str);//String转StringBuildersb.append("B23");String appendStr=sb.toString();//StringBuilder转StringSystem.out.println("appendStr:"+appendStr);//输出:appendStr:A01B23
JAVA中Stringbuffer有append( )方法:
而Stringbuffer是动态字符串数组,append( )是往动态字符串数组添加,跟“xxxx”+“yyyy”相当‘+’号。
跟String不同的是Stringbuffer是放一起的,String1+String2和Stringbuffer1.append("yyyy")虽然打印效果一样,但在内存中表示却不一样、
String1+String2 存在于不同的两个地址内存,Stringbuffer1.append(Stringbuffer2)放再一起。
三、HashMap实现 “label”:"value"的映射,也就是键值对的映射。下面是hashmap的常用的函数。
HashMap<String, String> map = new HashMap<>();map.put("1", "a"); // Map添加元素,用.put()函数map.put("2", "b");map.put("3", "a");map.put("4", "c");//map.put("4", "d"); //可以运行键值都为"4"(如果键相同,后者覆盖前者)System.out.println(map); //{1=a, 2=b, 3=a, 4=c}System.out.print(map.keySet()+" "); //集合中所有键以Set集合形式返回 [1, 2, 3, 4]System.out.println();System.out.print(map.values()+" "); //集合中所有值以Collection集合形式返回 [a, b, a, c]System.out.println();System.out.println(map.get("1")); // 通过.get("键")的方式返回“键”对应的“值” 输出aSystem.out.println("集合大小:"+map.size()); // map大小的函数.size函数 集合大小:4System.out.println("是否包含该键:"+map.containsKey("2")); //返回boolean 是否包含该键:trueSystem.out.println("是否包含该值:"+map.containsValue("b")); //返回boolean 是否包含该值:trueSystem.out.println(map.isEmpty()); //判断是否为空,若不包含键-值映射关系则返回true 输出falsemap.remove("4"); //删除映射关系用.remove函数System.out.println(map); //{1=a, 2=b, 3=a}// 实现hashmap的遍历Set<String> keys = map.keySet(); //map.keySet()返回key的集合for(String key:keys) {System.out.println(key+":"+map.get(key)); //map.get(key)返回key所对应的value值/* 输出:1:a2:b3:a*/}map.clear();//清空集合System.out.println(map); //{}
四、计算字符串、数组的长度,单独取出字符串中的某个字符
String s = "hello,world";//字符串System.out.println(s);int m = s.length(); //.length()函数为s的长度System.out.println("字符串s的长度:"+m); //字符串s的长度:11for(int i = 0; i<m; i++){char c = s.charAt(i); // .charAT(i)函数是获取S中1的第i个字符System.out.println(c);}char[] cs = s.toCharArray();System.out.println(cs); // 字符串s转换成字符数组 输出 hello,worldSystem.out.println(cs[2]); //输出 : lSystem.out.println("数组的长度:"+cs.length); //数组的长度:11 用.length
五、判断基本类型数据是否超过最大值最小值
// 数字类型包装类都支持两个常量:MAX_VALUE,MIN_VALUE // 分别保存了对应基本类型的最大值与最小值。//获取int类型的最大值、最小值int imax = Integer.MAX_VALUE;int imin = Integer.MIN_VALUE;System.out.println(imax); //2147483647System.out.println(imin); //-2147483648//获取double类型的最大值、最小值double dmax = Double.MAX_VALUE;double dmin = Double.MIN_VALUE;System.out.println(dmax); //1.7976931348623157E308System.out.println(dmin); //4.9E-324
实现判别int类型的整数是否溢出(上溢出、下溢出)
实现函数outRange(String s),该函数的功能是实现判断数字字符串是否超出了int类型的整数范围。若超出了范围,上溢出则返回最大值Integer.MAX_VALUE;下溢出则输出最小Integer.MIN_VALUE。若没有超出范围,则输出数字字符串的int形式.注意符号!
private static int outOfRange(String str) {int length = str.length();if (length == 0) {return 0;}int index = 0;int sum = 0; // 记录累加结果int blog = 1;while (index < length) {int digit;if (str.charAt(index) == '-') {index++;blog = -1;continue;} else {digit = str.charAt(index) - '0';}// 这里假定str是合法的字符串,不需要进行digit合法性判断if (Integer.MAX_VALUE / 10 < sum || (Integer.MAX_VALUE / 10 == sum && Integer.MAX_VALUE % 10 < digit)) {// 说明溢出if (blog == 1) {return Integer.MAX_VALUE;} else {return Integer.MIN_VALUE;}}// 说明还没有溢出sum = sum * 10 + digit;index++;}return Integer.parseInt(str);}
六、java.lang.Math常用方法:
包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。类似这样的工具类,其所有方法均为静态方法,并且不会创建对象,调用起来非常简单!
//public static double sqrt(double a) 此方法返回一个正平方根。如果参数是NaN或小于为零,那么结果为NaNSystem.out.println(Math.sqrt(1.23)); // 输出 1.1090536506409416System.out.println(Math.sqrt(-1.23)); // 输出:NaN//public static double hypot(double x, double y)//返回sqrt(x^{2}+y^{2}),没有中间溢出或下溢System.out.println(Math.hypot(1.3, 2.2)); // 输出2.5553864678361276// public static double log(double a) 取自然对数e为底的对数System.out.println(Math.log(2.715)); //输出 0.9987919533858987//public static double pow(double a, double b) 返回a的b次方System.out.println(Math.pow(2.1, 2)); //输出;4.41//public static double ceil(double a) 返回大于等于参数x的最小整数,即对浮点数向上取整System.out.println(Math.ceil(1.4)); //输出2.0System.out.println(Math.ceil(-3.3)); //输出值为 ‐3.0//public static double floor(double a) 返回小于等于x的最大整数,即对浮点数向上取整System.out.println(Math.floor(1.3)); // 输出1.0//public static double random() 选取大于等于 0.0 且小于 1.0 的伪随机 double 值System.out.println(Math.random()); //0.03013757602805034//public static int abs(int a) 返回值的绝对值System.out.println(Math.abs(-3)); //输出3//public static int max(int a, int b) 返回两个值中较大的一个System.out.println(Math.max(12,9)); //输出 12//public static int min(int a, int b) 返回两个值中较大的一个System.out.println(Math.min(12,9)); //输出 9//public static double signum(double d)//返回参数的signum函数; 如果参数为零,则返回零;如果参数大于零,则返回1.0;如果参数小于零,则返回-1.0System.out.println(Math.signum(1.3)); //输出1.0System.out.println(Math.signum(0));//输出0.0System.out.println(Math.signum(-1.3));//输出-1.0//public static long round(double a) :返回最接近参数的 long。(相当于四舍五入方法)long d1 = Math.round(5.5); //d1的值为6.0System.out.println(d1);long d2 = Math.round(5.4); //d2的值为5.0System.out.println(d2);
七、Array数组初始化、对数组进行的求最大值、最小值、平均值、总和操作
//静态初始化,列举数组中的元素int[] intArray1 = new int[]{1, 2, 3, 4, 5};for(int i = 0; i < intArray1.length; i++){System.out.println(intArray1[i]);}//简化版int[] intArray2 = {1, 2, 3, 4, 5};//动态初始化,标准形式int[] intArray3 = new int[5];//初始化二维数组int[][] intMatrix1 = {{1, 2}, {3, 4}, {5, 6}};int[][] intMatrix2 = new int[3][2];//获取数组长度int rowLength = intMatrix1.length;//行数int colLength = intMatrix1[0].length;//第0行列数System.out.println(rowLength); //输出3System.out.println(colLength); //输出2
int[] nums = {1, 7, 3, 6, 5, 6};//求数组最小值int min = Arrays.stream(nums).min() .getAsInt();System.out.println(min); //1//求数组的和int sum = IntStream.of(nums).sum();System.out.println(sum);//28//求数组的最大值int max = IntStream.of(nums) .max() .getAsInt();System.out.println(max);//7//求数组的平均值double avg = IntStream.of(nums) .average() .getAsDouble();System.out.println(avg);//4.666666666666667//连续的求和范围int sum1 = IntStream.range(1, 10) .sum();int sum2 = IntStream.rangeClosed(1, 10) .sum();System.out.println(sum1);//return 45System.out.println(sum2);//return 55//需要注意range()和rangeClosed()的区别,range()是exclusive最后一个值的,rangeClosed()是inclusive的。//提取数组的一部分生成另一个数组int a[] = new int[] { 10, 5, 3, 2, 6, 8, 7, 9, 1, 4 };int b[] = Arrays.copyOfRange(a, 2, 6);// 截取索引2(包括)到索引6(不包括)的元素System.out.println(Arrays.toString(b));//[3, 2, 6, 8]
八、String字符串常用函数
String s = "hello,word!";for(int i = 0; i < s.length(); i++){char c = s.charAt(i);
// System.out.println(c);}System.out.println(s.indexOf('o')); //返回指定字符在字符串中第一次出现处的索引,没有出现返回-1 输出4// int indexOf(String str, int fromIndex): 返回从 fromIndex 位置开始查找指定字符在字符串中第一次出现处的索引,如果此字符串中没有这样的字符,则返回 -1。System.out.println(s.indexOf('o',5)); // 输出7System.out.println(s.lastIndexOf('o')); //输出7 返回指定字符在此字符串中最后一次出现处的索引。System.out.println(s.lastIndexOf('o',6));//输出4 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。String s1 = "hello!wor!ld";String[] ss = s1.split("!"); // String[] split(String regex, int limit) 根据给定正则表达式的匹配拆分此字符串。// regex -- 正则表达式分隔符。 limit -- 分割的份数。for(String simpleSs : ss){System.out.println(simpleSs); //依次输出 hello wor ld}String str = new String("Welcome-to-Runoob");System.out.println("- 分隔符返回值 :" );for (String retval: str.split("-")){System.out.println(retval);}System.out.println("");System.out.println("- 分隔符设置分割份数返回值 :" );for (String retval: str.split("-", 2)){System.out.println(retval);}System.out.println("");String str2 = new String("www.runoob.com");System.out.println("转义字符返回值 :" );for (String retval: str2.split("\\.", 3)){System.out.println(retval);}System.out.println("");String str3 = new String("acount=? and uu =? or n=?");System.out.println("多个分隔符返回值 :" );for (String retval: str3.split("and|or")){System.out.println(retval);}String s2 = "Hello,Word! ";//String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。String ss2 = s2.substring(2,5);//[start,end)System.out.println(ss2); //輸出 llochar[] cs = s2.toCharArray(); //将此字符串转换为一个新的字符数组。String ss3 = s2.toLowerCase(); //使用默认语言环境的规则将此 String 中的所有字符都转换为小写。System.out.println(ss3); //輸出 hello,word!String ss4 = s2.toUpperCase();//使用默认语言环境的规则将此 String 中的所有字符都转换为大写。System.out.println(ss4); //输出 HELLO,WORD!String ss5 = s2.trim();//返回字符串的副本,忽略前导空白和尾部空白。System.out.println(ss5);// 输出 Hello,Word!System.out.println(s2.isEmpty());// isEmpty() 判断字符串是否为空。/*valueOf() 方法有以下几种不同形式:*/System.out.println(String.valueOf(true)); //输出 true valueOf(boolean b): 返回 boolean 参数的字符串表示形式。.System.out.println(String.valueOf('x')); // 输出x valueOf(char c): 返回 char 参数的字符串表示形式。System.out.println(String.valueOf(new char[]{'a', 'd', 'd'})); //输出add// valueOf(char[] data): 返回 char 数组参数的字符串表示形式。System.out.println(String.valueOf(new char[]{'a', 'd', 'd','e','s'},1,3)); // 输出 dde//valueOf(char[] data, int offset, int count): 返回 char 数组参数的特定子数组的字符串表示形式。// data -- 这是一个字符数组。 offset -- 这是初始偏移到字符串的值。 count -- 这是字符串值的长度。System.out.println(String.valueOf(12.98)); //valueOf(double d): 返回 double 参数的字符串表示形式。System.out.println(String.valueOf(12.9)); //valueOf(float f): 返回 float 参数的字符串表示形式。System.out.println(String.valueOf(12)); //valueOf(int i): 返回 int 参数的字符串表示形式。System.out.println(String.valueOf(12)); //valueOf(Object obj): 返回 Object 参数的字符串表示形式。String str = "hellodaming";//substring() 方法返回字符串的子字符串。//语法 public String substring(int beginIndex)//或 public String substring(int beginIndex, int endIndex)//参数 beginIndex -- 起始索引(包括), 索引从 0 开始。endIndex -- 结束索引(不包括)。String res = str.substring(0, 5);System.out.println(res); //hello//字符串的反转String string="hello.daming";String reverse = new StringBuffer(string).reverse().toString();System.out.println("字符串反转前:"+string); //hello.damingSystem.out.println("字符串反转后:"+reverse); //gnimad.olleh
九、StringBulider常用函数
StringBuilder sb = new StringBuilder("hello,");//初始化 输出;hello,System.out.println(sb);sb.append("daming").append(1).append('a').append(1.09).append(true).append(new char[]{'b','v'});System.out.println(sb); //输出 hello,daming1a1.09truebvsb.reverse(); // 反转reverse()函数System.out.println(sb); //输出 vbeurt90.1a1gnimad,ollehsb.delete(6,8); //[start,end)System.out.println(sb); //输出 vbeurt.1a1gnimad,ollehSystem.out.println(sb.toString()); // 转换成字符串 此方法返回表示此序列中数据的字符串。System.out.println(sb.length()); // 22sb.delete( 0, sb.length() ); //StringBuilder重用 清空数据方法System.out.println(sb.length()); // 0
十、Arrays 类
java.util.Arrays 类能方便地操作数组,它提供的所有方法都是静态的。 具有以下功能:
int[] intArray = new int[]{1,10,9,4,5};Arrays.sort(intArray); // Arrays.sort() 默认是升序排列for(int obArray:intArray){System.out.println(obArray); //输出1 4 5 9 10}Arrays.fill(intArray,6);// 给数组赋值:通过 fill 方法,全覆盖for(int obArray:intArray){System.out.println(obArray); //输出6 6 6 6 6}// 比较数组:通过 equals 方法比较数组中元素值是否相等。System.out.println(Arrays.equals(intArray, new int[]{6,6,6,6,6})); // 输出true// 求數組中各個元素的和int[] arr = {10, 11, 12};int sum = IntStream.of(arr).sum();System.out.println("The sum is " + sum); // 33
十一、Map(TreeMap、HashMap)实现按key值或value值排序
我们发现刷题时很多时候会根据键值对里面的值进行排序,有时也会根据键排序。常见的解决方法是写一个比较器,利用Collections里面的sort方法,传一个list和一个比较器进行排序。
常见的Map实现类包括TreeMap和HashMap类。
a.其中TreeMap 基于红黑树的NavigableMap实现。该映射根据其键的自然顺序进行排序,或者创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。Comprator可以对集合对象或者数组进行排序的比较器接口,实现该接口的public compare(T o1,T o2)方法即可实现排序,主要是根据第一个参数,小于等于大于第二个参数分别返回负整数,0,正整数.
b.HashMap的值是没有顺序的,它是按照key的HashCode来实现的,无序的HashMa实现排序参考下面的TreeMap的value排序代码。
注意:Map.Entry返回Collections视图。
TreeMap按照key值升序排列
//TreeMap 按key升序排序Map<String, Integer> map = new TreeMap<>();map.put("ac", 2);map.put("ba", 31);map.put("bc", 201);map.put("ab", 103);map.put("cb", 18);map.put("aj", 12);//默认情况下,TreeMap对key进行升序排序System.out.println("正常情况,TreeMap按key升序排序:");for (Map.Entry<String, Integer> entry : map.entrySet()) {System.out.println(entry.getKey() + ":" + entry.getValue());}输出:正常情况,TreeMap按key升序排序:ab:103ac:2aj:12ba:31bc:201cb:18
TreeMap按照key值降序排列。
HashMap排序有两个步骤:
1.通过map.entrySet()方法获取键值对;并将键值对传递给链表list;
2.自定义比较器来使用Collections.sort()方法排序链表。
//TreeMap按key降序排序Map<String, Integer> map = new TreeMap<>(new Comparator<String>() {public int compare(String obj1, String obj2) {// 降序排序return obj2.compareTo(obj1);// 升序排序//return obj1.compareTo(obj2);}});map.put("ac", 2);map.put("ba", 31);map.put("bc", 201);map.put("ab", 103);map.put("cb", 18);map.put("aj", 12);//按照key降序排序Set<String> keySet = map.keySet();Iterator<String> iter = keySet.iterator();while (iter.hasNext()) {String key = iter.next();System.out.println(key + ":" + map.get(key));}输出:cb:18bc:201ba:31aj:12ac:2ab:103
TreeMap按照value值升、降序排列(借助于Collections的sort(List list, Comparator)),该方法根据指定比较器产生的顺序对指定列表进行排序。但是有一个前提条件,那就是所有的元素都必须能够根据所提供的比较器来进行比较.
Map<String, Integer> map = new TreeMap<String, Integer>();map.put("ac", 2);map.put("ba", 31);map.put("bc", 201);map.put("ab", 103);map.put("cb", 18);map.put("aj", 12);//这里将map.entrySet()转换成listList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());//然后通过比较器来实现排序Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {public int compare(Map.Entry<String, Integer> o1,Map.Entry<String, Integer> o2) {//升序排序//return o1.getValue().compareTo(o2.getValue());//降序排列return -o1.getValue().compareTo(o2.getValue());}});for (Map.Entry<String, Integer> mapping : list) {System.out.println(mapping.getKey() + ":" + mapping.getValue());}运行结果:bc:201ab:103ba:31cb:18aj:12ac:2
HashMap实现按Key值的排序。
Map<String, Integer> map = new HashMap<String, Integer>();map.put("cc", 33333);map.put("aa", 11111);map.put("dd", 44444);map.put("ee", 55555);map.put("bb", 22222);List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());// 对HashMap中的key 进行排序Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {// 升序排列
// return (o1.getKey()).toString().compareTo(o2.getKey().toString());// 降序排列return (o2.getKey()).toString().compareTo(o1.getKey().toString());}});// 对HashMap中的key 进行排序后 显示排序结果for (Map.Entry<String, Integer> mapping : list) {System.out.println(mapping.getKey() + ":" + mapping.getValue());}运行结果·dd:44444cc:33333bb:22222aa:11111
HashMap按值进行排序,HashMap的值是没有顺序的,它是按照key的HashCode来实现的。
Map<String, Integer> map = new HashMap<String, Integer>();map.put("cc", 33333);map.put("aa", 11111);map.put("dd", 44444);map.put("ee", 55555);map.put("bb", 22222);//将map.entrySet()转换成listList<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {@Overridepublic int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {//升序排列//return o1.getValue().compareTo(o2.getValue());//降序排序return o2.getValue().compareTo(o1.getValue());}});for (Map.Entry<String, Integer> mapping : list) {System.out.println(mapping.getKey() + ":" + mapping.getValue());}运行结果:ee:55555dd:44444cc:33333bb:22222aa:11111
拓:有时候需要对hashMap会对key和value综合排序,包括优先按值、其次按键排序 或者 优先按键、其次按值排序,只需要多compare方法进行重写即可。
Map<String, Integer> map = new HashMap<String, Integer>();map.put("ca", 33333);map.put("cb", 11111);map.put("dd", 44444);map.put("ae", 55555);map.put("bb", 22222);List<Map.Entry<String, Integer>> list = new ArrayList<Map.Entry<String, Integer>>(map.entrySet());// 对HashMap中的key 进行排序Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {// 优先按照key升序排列,其次按照value值降序排列int result = (o1.getKey()).compareTo(o2.getKey());if(result != 0){return result;}else{return o2.getValue().compareTo(o1.getValue());}}});// 对HashMap中的key 进行排序后 显示排序结果for (Map.Entry<String, Integer> mapping : list) {System.out.println(mapping.getKey() + ":" + mapping.getValue());}运行结果:ae:55555bb:22222ca:33333cb:11111dd:44444
(1)宝藏刷题博客
https://blog.csdn.net/qq_43563660/article/details/116805780?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-17.base&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-17.base
(2)宝藏刷题学习资料;
GitHub - youngyangyang04/leetcode-master: LeetCode 刷题攻略:200道经典题目刷题顺序,共60w字的详细图解,视频难点剖析,50余张思维导图,支持C++,Java,Python,Go,JavaScript等多语言版本,从此算法学习不再迷茫!🔥🔥 来看看,你会发现相见恨晚!🚀