在arraylist中找到一系列相似的元素

时间:2013-01-29 06:10:52

标签: java

我有一个整数类型的arraylist。该列表包含一些值 在某些时候,列表将连续包含相似的值(3个值) 我需要找到3个相似元素出现的位置。

例如:

ArrayList<Integer> int_values=new ArrayList<Integer>();
int_values.add(10);
int_values.add(20);
int_values.add(30);
int_values.add(10);
int_values.add(10);
int_values.add(10);

从第3到第5位可以看出,有类似的值 所以我需要检索位置5.
此系列重复的相似元素也只会出现一次。

我希望我能够解释这个情景。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作,

public static List<Integer> findConsequtive3(ArrayList<Integer> int_values) {

        Integer[] arrayItems = (Integer[]) int_values.toArray(new Integer[0]);

        List<Integer> consequetive = new ArrayList<Integer>();
        int count = 1;
        for (int i = 1; i < arrayItems.length; i++) {
            if (arrayItems[i - 1] == arrayItems[i]) {
                count++;
                if (count == 3) {
                    consequetive.add(i + 1); // Since array is zero indexed adding 1
                    count = 0; // resetting count
                }
            }
        }
        return consequetive;
    }

答案 1 :(得分:0)

public static void main(String[] args) {
    ArrayList<Integer> int_values = new ArrayList<Integer>();
    int_values.add(10);
    int_values.add(20);
    int_values.add(30);
    int_values.add(10);
    int_values.add(10);
    int_values.add(10);
    int count = 0;
    for (int i = 0; i < int_values.size() - 2; i++) {
        if (int_values.get(i) == int_values.get(i + 1))
            if (int_values.get(i + 1) == int_values.get(i + 2))
                System.out.println(i+2);
    }
}