我有一个整数列表,例如 {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/