首页 > 编程语言 >java将一个有序数组按是否连续进行分组

java将一个有序数组按是否连续进行分组

时间:2022-10-02 10:02:50浏览次数:51  
标签:java String get tt list state 分组 result 数组


代码:

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

/**
* @author liyinlong
* @since 2022/8/22 9:45 上午
*/
public class SemTest {

public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 5, 8,3, 10, 11, 19, 9, 13, 4,14);
list.sort(Comparator.comparing(Integer::intValue));

String convert = convert(list);
System.out.println(convert);


}

public static String convert(List<Integer> list) {
int state = 0;
String result = "";
for (int i = 0; i < list.size(); i++) {
if (i == list.size() - 1) {
state = 2;
}
if (state == 0) {
if (list.get(i + 1) == list.get(i) + 1) {
result += Integer.toString(list.get(i));
result += "-";
state = 1;
} else {
result += Integer.toString(list.get(i));
result += ",";
}
} else if (state == 1) {
if (list.get(i + 1) != list.get(i) + 1) {
result += Integer.toString(list.get(i));
result += ",";
state = 0;
} else {
result += list.get(i) + "-";
}
} else {
result += Integer.toString(list.get(i));
}
}
String[] str = result.split(",");

StringBuffer sbf = new StringBuffer();
for (int stritem = 0; stritem < str.length; stritem++) {
String[] sp = str[stritem].split("-");
List<String> tt = Arrays.asList(sp);
if(tt.size() == 1){
sbf.append(Arrays.toString(tt.toArray()));
}else{
sbf.append("[" + tt.get(0) + "—" + tt.get(tt.size()-1) + "]");
}
if(stritem != str.length-1){
sbf.append(",");
}
}
return sbf.toString();
}

}

运行结果:

java将一个有序数组按是否连续进行分组_mybatis

 

标签:java,String,get,tt,list,state,分组,result,数组
From: https://blog.51cto.com/u_12482901/5729212

相关文章

  • Java压缩、解压zip文件
    代码:publicclassZipUtil{/***压缩文件/文件夹**/publicstaticvoidcompress(StringsrcFilePath,StringdestFilePath){Filesrc=......
  • java 类与对象
    1.在创造一个类的时候,如果自定义一个构造函数,那么计算机将不再提供默认构造函数。2.在一个类中,如果该类有无参构造函数和有参构造函数,一个成员变量value且带初值,一个valu......
  • 后缀数组小结
    后缀数组小结借用了一下别人的\(\rmblog\)。简介介绍一下基本数组。我们把原串\(\rmA\)的所有后缀按字典序从小到大排个序,则排名为\(\rmi\)的字符串是以第\(......
  • Java lamda表达式 Predicate<T>、BiFunction<T,T,R>、FunctionalInterface 应用实例说
    使用相对应的函数式接口,可使编写程序在某些时候变得更高雅和灵活,下面对各种情况进行说明ps:核心原理就是将方法作为一个参数传到另一个方法,使该方法处理内容更丰富和灵......
  • 代码随想录 哈希表理论基础,有效的字母异位词(LeetCode 242),两个数组的交集 (LeetCode
    哈希表理论基础哈希表是根据关键码的值而直接进行访问的数据结构。哈希碰撞拉链法拉链法就是要选择适当的哈希表的大小,这样既不会因为数组空值而浪费大量内存,也不会......
  • Demo11_12 java流程控制01小总结
    packagecom.HuanXin.scanner;importjava.util.Scanner;publicclassDemo01_02{publicstaticvoidmain(String[]args){//hasNext()与next()Sca......
  • 前端中数组的方法之 --- Array.prototype.reduce()
    参数:reduce((previousValue,currentValue,currentIndex,array)=>{/*…*/},initialValue)回调函数:previousValue:上一次调用 callbackFn 时的返回值。在第......
  • Java中的运算符
    短路1.true||2.true||3.false||4.true其中走完1表达式就不会再走了节省了不必要的计算1.true&&2.true&&3.false&&4.true其中走完3表达式就不会再走了......
  • JAVA包装类
    *包装类与基本数据类型*包装类是将基本数据类型封装成一个类,包含属性和方法*使用:*在使用过程中,会涉及到自动装箱和自动拆箱*装箱:将基本数据类型转换......
  • 数组操作の旋转二维数组
    一、题目描述:​​旋转图像​​给定一个n × n的二维矩阵 matrix表示一个图像。请你将图像顺时针旋转90度。你必须在原地旋转图像,这意味着你需要直接修改输入的二......