机试一些常见技巧,持续更新中...

news2024/10/11 23:21:53

对字符串的操作

  • 对单个字符串排序
char[] sourceArray = str.toCharArray();
Arrays.sort(sourceArray);
String sourceArrayStr = new String(sourceArray);
  • 对字符串去重(不使用 list)
public static String ARFA2(String str) {
   StringBuffer sb = new StringBuffer();
   for (int i = 0; i < str.length(); i++) {
       // 比如 acqafa,遍历到第二个a,此时 str.indexOf(str.charAt(i)) 等于0,就不会添加到 StringBuffer
       if (str.indexOf(str.charAt(i))==i) {
           sb.append(str.charAt(i));
       }
   }
   return sb.toString();
}
  • 对 list 中的字符串排序
List<String> list = Arrays.asList("aa", "cae", "eef", "dee", "bbae");
list.sort(Comparator.comparing(String::toLowerCase)); // toUpperCase 结果也是一样..
// 或者用这个 Collections.sort(list);
System.out.println(list);// 输出 [aa, bbae, cae, dee, eef]
  • 对 map 分别对 key 和 value 排序
// 按值降序排序后的 map,降序排序要返回LinkedHashMap对象才有效
LinkedHashMap<Character, Integer> linkedHashMap = map.entrySet().stream().sorted(Collections.reverseOrder(Map.Entry.comparingByValue())).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, LinkedHashMap::new));
HashMap<Character, Integer> collect = map.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (e1, e2) -> e1, HashMap::new));
        
  • 对于map,因为排序后也不能直接取出第一个数,所以也可以使用另外的方式
List<Integer> list = new ArrayList<>(map.keySet());
list.sort((o1, o2) -> o2 - o1); //降序
return map.get(list.get(0));// 返回第一个元素
  • 把字符串反转
    StringBuilder 和 StringBuffer 都提供了 reverse() 方法,可以方便地反转字符串
String reversed = new StringBuilder(original).reverse().toString();

还可以下面这样

String s = "abcdefg";
List<String> list = s.chars().mapToObj(c->(char)c).map(String::valueOf).collect(Collectors.toList());//s.chars()是转成十进制了
Collections.reverse(list);
String str = list.stream().collect(Collectors.joining());
  • 判断字符串是不是纯数字组成
public static boolean isNumeric(String str){
    Pattern pattern = Pattern.compile("[0-9]*");
    return pattern.matcher(str).matches();
}
  • 判断是否是纯字符串,直接用API就好
public static boolean isCharacter(String str){
    for (char ch : str.toCharArray()) {
        if (!Character.isLetter(ch)) {
            return false;
        }
    }
    return true;
}
  • 给定一字符串,按固定长度分割,比如abcde,2位长度分割,ab、bc、cd、de
// 用一个list来装
List<String> list = new ArrayList<>();
for (int i=0; i<=str.length()-len; i++) {
    String substring = str.substring(i ,len + i);
    list.add(substring);
}

更常用的是下面这种,从1分割到字符串等长的

for (int len = 1; len <= shortStr.length(); len++) {
    for (int i = 0; i <= shortStr.length()-len; i++) {
        String substring = shortStr.substring(i, i + len);
    }
}
  • 字符串转整型
String str = "12345";
int res = 0;
for (char ch : str.toCharArray()) {
    res = 10 * res + (ch - '0'); //防止溢出
}
  • list 转 数组-字符串
List<String> list = List.of("aa", "bb", "cc", "dd", "ee");
String[] arr = list.toArray(new String[0]);
  • list 转 数组-整型
List<Integer> list = List.of(1, 2, 3, 4, 5, 6);
int[] arr = list.stream().mapToInt(Integer::intValue).toArray();
  • 数组转list,转换后的list支持增删改查
String[] arr = {"1", "2", "3", "4", "5"};
List<String> list1 = new ArrayList<>(arr.length);
Collections.addAll(list1, arr);

// 或者使用 stream
String[] arr = {"1", "2", "3", "4", "5"};
List<Integer> list = Arrays.stream(arr).mapToInt(Integer::parseInt).boxed().collect(Collectors.toList());
  • 分组排序
List<String> list = Arrays.asList("aaa", "bb", "s32", "sdjfkl");
Map<Integer, List<String>> map = list.stream().collect(Collectors.groupingBy(String::length));
  • 字符串判空
String s = "hello,world";
// 之前的做法
if (s != null) {
    System.out.println(s);
}
// 现在
Optional.ofNullable(s).ifPresent(System.out::println);
  • Java中保留两位小数的多种写法
BigDecimal bd = new BigDecimal("3.2323455");
bd = bd.setScale(3, RoundingMode.HALF_UP);
System.out.println(bd);

DecimalFormat df = new DecimalFormat("0.00");
df.setRoundingMode(RoundingMode.HALF_UP);
System.out.println(df.format(0.2323));

NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
/*
* setMinimumFractionDigits设置成2
*
* 如果不这么做,那么当value的值是100.00的时候返回100
*
* 而不是100.00
*/
nf.setMinimumFractionDigits(2);
nf.setRoundingMode(RoundingMode.HALF_UP);
/*
* 如果想输出的格式用逗号隔开,可以设置成true
*/
nf.setGroupingUsed(false);
System.out.println(nf.format(47.20000));

String s = new Formatter().format("%.2f", 47.000).toString();
System.out.println(s);

String res = String.format("%.2f", 3.1415).toString();
System.out.println(res);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2206203.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux的kafka安装部署

1.kafka是一个分布式的,去中心化的,高吞吐低延迟,订阅模式的消息队列系统 确保要有jdk与zookeeper安装配置 2.下载kafka安装包 http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.1.tgz 此时可以wget http://archive.apache.org/dist/kafka/2.4.1/kafka_2.12-2.4.…

数字后端零基础入门系列 | Innovus零基础LAB学习Day1

一 Floorplan 数字IC后端设计如何从零基础快速入门&#xff1f;(内附数字IC后端学习视频&#xff09; Lab5-1这个lab学习目标很明确——启动Innovus工具并完成设计的导入。 在进入lab之前&#xff0c;我们需要进入我们的FPR工作目录。 其中ic062为个人服务器账户。比如你端…

Graph Contrastive Learningwith Reinforcement Augmentation

IJCAI24 推荐指数&#xff1a; #paper/⭐⭐⭐ 领域&#xff1a;图增强强化学习 胡言乱语&#xff1a; 不愧是清华组的论文&#xff0c;这个实验的目的是利用强化学习去生成对比学习的增强视图。但是&#xff0c;其仍然有一些小问题&#xff1a;其本质实际是对以往的图增强方法…

vrrp实验

配置Trunk和Access [SW3]int e0/0/1 [SW3-Ethernet0/0/1]p l a [SW3-Ethernet0/0/1]p d v 10 [SW3-Ethernet0/0/1]int e0/0/2 [SW3-Ethernet0/0/2]p l a [SW3-Ethernet0/0/2]p d v 10 [SW3-Ethernet0/0/2]int e0/0/3 [SW3-Ethernet0/0/3]p l a [SW3-Ethernet0/0/3]p d v 20 [S…

postgresql 安装

一、下载 PostgreSQL: File Browser 下载地址 PostgreSQL: File Browser 上传到服务器,并解压 二、安装依赖 yum install -y perl-ExtUtils-Embed readline-devel zlib-devel pam-devel libxml2-devel libxslt-devel openldap-devel 创建postgresql 和目录 useradd …

位运算 -- 力扣

1486. 数组异或操作 1486. 数组异或操作 根据题意&#xff0c;使用参数 n 和 start 生成一个数组&#xff0c;最后返回数组中所有元素按位异或&#xff08;XOR&#xff09;后得到的结果。 首先&#xff0c;异或运算的规则是&#xff0c;当同一位的二进制数不同时结果为 1&…

【Golang】Go 语言中的 time 包详解:全面掌握时间处理与应用

在 Go 语言中&#xff0c;time 包提供了强大的时间处理功能&#xff0c;适用于各种场景&#xff1a;获取当前时间、格式化和解析时间、计算时间间隔、设置定时器、处理超时等。在开发过程中&#xff0c;熟练掌握 time 包能够帮助我们轻松处理时间相关的操作&#xff0c;尤其是定…

小程序之获取用户头像与昵称

html 这个是通过一个点击事件进行显示的,下面是效果图,获取头像最关键的是 open-type"chooseAvatar" ,获取昵称最关键的是 type"nickname" ,大家多加注意i哦 <!-- 大的输入调取 --><view class"myis_box" wx:if"{{showMyisBox}}…

做ppt用什么软件好?5个办公必备的ppt工具推荐!

ppt用什么软件做&#xff1f; 相信很多人看到这个&#xff0c;会第一时间想到Microsoft Office套件包含的幻灯片软件Powerpoint&#xff0c;它的名声甚广&#xff0c;以至于某种程度上成了PPT的代名词。 在Powerpoint之外&#xff0c;这些年也陆续诞生了各式各样的PPT软件&am…

CocosCreator 快速部署 TON 游戏:Web2 游戏如何使用 Ton支付

在本篇文章中&#xff0c;我们将继续探讨如何使用 Cocos Creator 开发 Telegram 游戏&#xff0c;重点介绍如何集成 TON 支付功能。通过这一教程&#xff0c;开发者将学会如何在游戏中接入 TON Connect&#xff0c;实现钱包连接、支付以及支付后的校验流程&#xff0c;最终为 W…

YOLO11改进|SPPF篇|引入SPPFCSPC金字塔结构

目录 一、【SPPFCSPC】金字塔结构1.1【SPPFCSPC】金字塔结构介绍1.2【SPPFCSPC】核心代码 二、添加【SPPFCSPC】金字塔结构2.1STEP12.2STEP22.3STEP32.4STEP4 三、yaml文件与运行3.1yaml文件3.2运行成功截图 一、【SPPFCSPC】金字塔结构 1.1【SPPFCSPC】金字塔结构介绍 下图是…

vue后台管理系统从0到1(1)

文章目录 vue后台管理系统从0到1&#xff08;1&#xff09;nvm 下载安装1.卸载nodejs环境2.安装nvm 安装nrm vue后台管理系统从0到1&#xff08;1&#xff09; 第一节主要是先安装我们的工具nvm nodejs版本管理工具&#xff0c;和nrm镜像管理工具 nvm 下载安装 nvm是一款管理…

网络流量预测的学习——持续更新ing

文章目录 前情提要何为网络流量网络流量分析&#xff08;NTA&#xff09;网络流量组成网络流量处理过程 预测网络流量的工具wiresharkbrim&#xff08;zui&#xff09; 机器学习中的网络流量预测参考文章 前情提要 记录一些有关网络流量的学习 何为网络流量 网络流量是指在计…

【D3.js in Action 3 精译_033】4.1.0 DIY 实战:如何通过学习 d3.autoType 函数深度参与 D3 生态建设

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一部分 D3.js 基础知识 第一章 D3.js 简介&#xff08;已完结&#xff09; 1.1 何为 D3.js&#xff1f;1.2 D3 生态系统——入门须知1.3 数据可视化最佳实践&#xff08;上&#xff09;1.3 数据可…

又被特斯拉演了?继续“画饼式”发布Robotaxi,产业链静观其变

9月底的暴涨后&#xff0c;A股资产正经历回调&#xff0c;科技板块变现参差。不过&#xff0c;无人驾驶领域的预期依然很强。 10月10日科技股全线调整之际&#xff0c;无人驾驶板块盘中的巨幅震荡拉升就是典型的预热动作。东箭科技、天龙股份等多只智能驾驶个股涨停。核心驱动…

ACR、PZ、AMC仪表接线说明及通讯协议解析

1.ACR/PZ/AMC多功能表接线说明 三相三线接线说明 使用场合负载是平衡系统&#xff0c;并且没有零线的场合。 1. 端子号1&#xff0c;2为辅助电源&#xff1a; 如上图&#xff0c;接入相电压220V输入。其中辅助电源的火线加装5A保险丝&#xff0c;零线直接接到零排上。 2&am…

iPhone使用指南:如何在没有备份的情况下从 iPhone 恢复已删除的照片

本指南将向您展示如何在没有备份的情况下从 iPhone 恢复已删除的照片。我们所有人在生活中的某个时刻都一定做过一些愚蠢的事情&#xff0c;例如从手机或电脑中删除一些重要的东西。这是很自然的&#xff0c;没有什么可羞耻的。您可能在辛苦工作一天后回来。当突然想看一些照片…

C++开发五子棋游戏案例详解

✅作者简介&#xff1a;2022年博客新星 第八。热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏…

JavaSE——集合3:ArrayList、Vector

目录 一、ArrayList的注意事项 二、ArrayList的扩容机制(重要) 三、Vector底层结构和源码剖析 1.Vector类的定义说明 2.Vector底层也是一个对象数组 3.Vector是线程同步的&#xff0c;即线程安全&#xff0c;Vector类的操作方法带有synchronized 4.在开发中&#xff0c…

obs录屏怎么样?四大优秀录屏工具亲测好用!

录屏需求日盛&#xff0c;接下来我们就来聊聊几款市面上较为热门的录屏软件——福昕录屏大师、转转大师录屏、爱拍录屏以及经典的obs录屏&#xff0c;希望能给寻找合适录屏工具的您带来一些灵感。 福昕录屏大师 直达链接&#xff1a;www.foxitsoftware.cn/REC/ 如果你刚开始…