1. 程式人生 > >判斷該list集合裡面是否有連續的數字

判斷該list集合裡面是否有連續的數字

// 引數 ,List集合:想要查詢連續數字的集合,max:想要找幾個連續數字

// 返回值:返回刪除連續數字之後的集合,(要是想要獲取連續序列的集合可以自行修改返回值就是多個LIst<Integer> seq )

private List<Integer> isSequence(List<Integer> pokers, int max) {


Collections.sort(pokers); // 先將集合中的元素排序

if(CollectionUtils.isNotEmpty(pokers) && pokers.size() >= max){


for(int index = 0; index < pokers.size(); index++){

List<Integer> seq = new ArrayList<>(max);

int currValue = pokers.get(index);

for(int j = currValue; j < currValue + max; j ++){ 

if(pokers.contains(j)){ //  判斷當前元素的下一個是否在list集合裡面如果存在將 為true存在map裡
seq.add(j); // 將連續的存在seq中
}
}

if(seq.size() == max){

for(Integer num : seq){

pokers.remove(pokers.indexOf(num)); // 根據元素的索引位置刪除元素 , 只想刪除一個元素seq對應的一個元素,並且不刪除重複元素的時候,

// 我使用的是poker.remove(int index) 根據索引刪除(

註釋:1,不可以直接使用pokers.remove(Object o) 這個方法,會發生陣列越界,

    2,也不可以使用removeAll(Collenction<T> c) 

    舉例:List<Integer> a = new ArrayList<>(Array.asList(new Integer(1,2,3,4,5,6,7,1,1,1)));

    List<Integer> b = new ArrayList<>(Array.asList(new Integer(1)));

   用a.removeAll(b),就會把集合a裡面的所有的元素1,都會刪除。

}
}
}
}
return pokers;
}