【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秒)