【Java】Listデータ前後比較

Listデータで1件目のオブジェクトのあるデータと2件目のオブジェクトのあるデータ が同じデータだったら、フラグを立てる

Data.java データ用のクラス

package test;

/**
 *
 * @author 
 */
public class Data {
    private String id;
    private String name;
    private boolean flag = false;

以下、getter、setter
}

Test.java List比較処理用のクラス

package test;

import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author yaha
 */
public class Test {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // データ用意
        String[] arrayData = {"b", "b", "a", "a", "d", "c", "x", "x"};
                
        List<Data> listData = new ArrayList<>();
        for (int i = 0; i < arrayData.length; i++) {
            Data n = new Data();
            String id = Integer.toString(i);
            // 値の設定
            n.setId(id);
            n.setName(arrayData[i]);
            // リストに設定
            listData.add(n);
        }
        
        // nameの値が同じ要素は、flagにtrueをセットする
        int i = 0;
        Data prev = new Data();
        
        for (Data data: listData) {
            // 2件目以降 かつ 前回のnameと今回のnameが一致する場合
            if (i > 0 && prev.getName().equals(data.getName())) {
                // 前回と今回のflagにtrueを設定する(同じ値があった場合のフラグを立てる)
                prev.setFlag(true);
                data.setFlag(true);
            }
            // 今回のデータを前回分として保持する
            prev = data;
            i++;
        }
        
        // 結果
        i = 0;
        for (Data data : listData) {
            System.out.print(i + "ID:" + data.getId() + "  name:" + data.getName() + "  flag:" + data.isFlag() + "\n");
        }
    }
    
}

結果 nameの値がデータの前後で同じ場合、flagがtrueになる

run:
0ID:0  name:b  flag:true
0ID:1  name:b  flag:true
0ID:2  name:a  flag:true
0ID:3  name:a  flag:true
0ID:4  name:d  flag:false
0ID:5  name:c  flag:false
0ID:6  name:x  flag:true
0ID:7  name:x  flag:true
ビルド成功(合計時間: 0秒)