Java:查找列表中的所有顺序模式

标签 java

我有一个整数列表,例如 {1,2,3,,5,7,8,9}。我想做的是将其分解为 {1,2,3} 和 {7,8,9}。我知道代码

    boolean flag = true;
    for( int i = 0; i < results.size()-1; i++ ) {
        if( results.get(i+1) != results.get(i)+1 ) {
            flag = false;
            break;
        }
    }

但这只会发现它们从第一个值开始(情况并非总是如此),并且只会找到一个。

最佳答案

试试这个,

public void seqList() {
    List<Integer> results= Arrays.asList(1,2,3,5,4,7,8,9,101,102,13,14,15,14,16);

    List<List<Integer>> allSeqList = new ArrayList<>();
    Integer oldVal = null;      
    List<Integer> subList = null;
    Integer lastElement = 1;

    for (Integer value : results) {         
        if (oldVal!=null && value == oldVal + 1) {
            if(subList==null){
                subList= new ArrayList<>();                 
            }
            if(subList.size()==0){
                subList.add(value-1);
            }
            subList.add(value);
        }else{
            if(subList!=null){
                allSeqList.add(subList);
            }

            subList=null;
        }
        if(subList!=null && lastElement==results.size()){
            allSeqList.add(subList);
        }
        lastElement++;
        oldVal=value;
    }

    System.out.println(allSeqList);
}

关于Java:查找列表中的所有顺序模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25255227/

相关文章:

java - JButtons 在 MouseOver 之前不会出现

java - Android:标签没有改变

java - 无法在 Android 中启动其他 Activity

java - 如何在终止前调用容器中每个 bean 的销毁方法

java - 如果我在多线程服务器程序中运行并行代码会发生什么?

java - Spring MVC 表 blob 字段转 json

java - 按分隔符数量拆分字符串

java - 如何让2个线程共享数据? ( java )

java - 逻辑或和短路或运算符有什么区别?

java - 无法在 main() 方法中实例化字段(实例变量)。为什么?? java