首页 > 其他分享 >31-ArrayList和HashMap集合的排序

31-ArrayList和HashMap集合的排序

时间:2024-01-30 14:44:21浏览次数:37  
标签:HashMap 31 list list3 o2 add ArrayList o1

 

扩展:在List集合中 添加另一个集合时,一般常用两种方法

boolean add(E e) : 将 list 作为一个元素添加到集合中

boolean addAll(Collection<? extends E> c) : 把 list 中的所有元素添加到集合中

 

ArrayList类的排序方法(常用)

package list;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ListDemo4 {
    public static void main(String[] args){
        System.out.println("======================ArrayList集合示例======================");
        // 以上两个例子,都是String和Double类型的,这两个类型都是包装类,都实现了Comparable接口,所以可以排序
        // 1.字符串排序
        List<String> list = new ArrayList<>();
        list.add("a");
        list.add("c");
        list.add("b");
        list.sort((o1, o2) -> o1.compareTo(o2)); // [a, b, c]
        System.out.println(list);

        // 2.Double类型排序
        List<Double> list2 = new ArrayList<>();
        list2.add(11.0);
        list2.add(33.0);
        list2.add(22.0);
        list2.sort((o1, o2) -> o1.compareTo(o2)); // [11.0, 22.0, 33.0]
        System.out.println(list2);
        
        // 3.String和Double类型的集合,但是集合中的元素是字符串类型的数字
        List<String> list3 = new ArrayList<>();
        list3.add("11.0");
        list3.add("33.0");
        list3.add("22.0");
        list3.add("111.0");

        // 不进行数据类型转换,直接比较会出问题
        list3.sort((o1, o2) -> o1.compareTo(o2));
        System.out.println(list3); // [11.0, 111.0, 22.0, 33.0] 有问题,因为是字符串,所以比较的是字符串的大小,而不是数字的大小

        // 先进行数据类型转换,再进行比较
        // 从小到大排序
        list3.sort((o1, o2) -> (int)(Float.parseFloat(o1) - Float.parseFloat(o2)));
        System.out.println(list3); // [11.0, 22.0, 33.0, 111.0]

        // 从大到小排序
        Collections.reverse(list3);
        System.out.println(list3); // [111.0, 33.0, 22.0, 11.0]
    }
}

 

标签:HashMap,31,list,list3,o2,add,ArrayList,o1
From: https://www.cnblogs.com/REN-Murphy/p/17997079

相关文章

  • VMware Horizon 8 2312 - 虚拟桌面基础架构 (VDI) 和应用软件
    VMwareHorizon82312-虚拟桌面基础架构(VDI)和应用软件请访问原文链接:https://sysin.org/blog/vmware-horizon-8/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgVersion2312DocumentationReleaseNotesReleaseDate2024-01-23虚拟桌面基础......
  • 31. 下一个排列(中)
    目录题目题解:找规律题目例如,arr=[1,2,3],以下这些都可以视作arr的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1]。整数数组的下一个排列是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典顺序从小到大排列在一个容器中,那么数组的下一个排列就是......
  • 【2024潇湘夜雨】WIN11_Pro_23H2.22631.3085软件选装纯净版1.29
    【系统简介】=============================================================1.本次更新母盘来自WIN11_Pro_23H2.22631.3085。2.增加部分优化方案,手工精简部分较多。3.OS版本号为22631.3085。精简系统只是为部分用户安装,个别要求高的去MSDN下。4.集成《DrvCeo-2.16.0.0》网卡版、......
  • hashmap线程不安全 ConcurrentHashMap是如何实现线程安全的
       2、JDK1.8中的数据覆盖(1)dk1.7的数据丢失、死循环问题在JDK1.8中已经得到了很好的解决,直接在HashMap的resize()中完成了数据迁移。(2)为什么说JDK1.8会出现数据覆盖的情况?查看这段JDK1.8中的put操作代码:在这里插入图片描述如下图框中的代码是判断是否出现hash碰撞,假设两个......
  • .Net Core报“‘GB2312‘ is not a supported encoding name. For information on def
    1、......
  • B3929 [GESP202312 五级] 小杨的幸运数 题解
    因为一些众所周知的原因,不放代码。分享一种考场思路:\(a\le10^7\),顺序查找肯定会废,所以可以用一种类似埃氏筛的方法将所有满足条件的数标记一下,并将其加入一个答案数组\(a\)当中。然后每次查询只需要用lower_bound函数二分查找一下,假如找到了第\(i\)个:\(a_i=x\),直接......
  • 深入了解Java中的ArrayList
    Java中的ArrayList是一个常用的动态数组类,它提供了便捷的操作方法和灵活的大小调整能力。在本篇博客中,我们将深入了解ArrayList的特性、常见用法和一些注意事项。ArrayList概述:ArrayList是Java集合框架中的一个类,它实现了List接口,并继承了AbstractList类。它基于数组实现,可以动......
  • FastAPI学习-31 FastAPI 如何集成 socket.io
    前言socket.io就是基于websocket封装的一个库,主要特点是能够进行实时的双向通讯,主要应用场景有实时的聊天,数据实时分析,数据传输,文件协同合作。有个socket.io的fastapi-socketio官方库,该库依赖传统的python-socketio库环境准备pipinstallfastapi-socketiofastapi服......
  • P3146 [USACO16OPEN] 248 G
    原题链接题解1:\(Code\)#include<bits/stdc++.h>usingnamespacestd;inta[255]={0};intf[255][255]={0};intmain(){intn,ans=0;cin>>n;for(inti=1;i<=n;i++){cin>>a[i];f[i][i]=a[i];an......
  • 《安富莱嵌入式周报》第331期:单片机实现全功能软件无线电,开源电源EEZ升级主控,ARM 汇编
    周报汇总地址:http://www.armbbs.cn/forum.php?mod=forumdisplay&fid=12&filter=typeid&typeid=104 目录:1、单片机实现低配版全功能软件无线电,范围0.5-30MHz,支持SSB、AM、FM和CW2、TI整理的ARM汇编用户指南3、ADI差分链路的SPI扩展器LTC4332,支持1200米4、开源串口,SPI,I......