リスト内の使用可能な値に基づいてboolean
変数の値を変更するには、助けが必要です。豆にデフォルトでリスト内の利用可能な値に基づいて変数の値を変更する方法
public class Student {
private Integer id;//Getter and Setter
private String name;//Getter and Setter
private String location;//Getter and Setter
private String remarks;//Getter and Setter
private boolean disable;//Getter and Setter
public Student(Integer id, String name, String location, String remarks, boolean disable){
this.id = id;
this.name = name;
this.location = location;
this.remarks=remarks;
this.disable=disable;
}
、無効の値がtrueである:私はStudent
というクラスを定義しました。プログラムでは、私はemployeeList
とselectedEmployees
の2つのリストを持っています。 、
private List<Student> employeeList = new ArrayList<Student>();
private List<Student> selectedEmployees;
private boolean disable;
@PostConstruct
public void init() {
//add Employees
disable=true;
Student w1 = new Student(111, "AAAA", "ZZZZ", "", disable);
Student w2 = new Student(222, "CCCCC", "ZZZZZ", "OUT", disable);
Student w3 = new Student(333, "BBBBBB", "YYYYYYY", "IN", disable);
employeeList.add(w1);
employeeList.add(w2);
employeeList.add(w3);
}
しかし、私は上記の値のいずれかがselectedEmployees
リストにあるかどうかを確認するために呼び出されますEnableInputText
と呼ばれる方法を持っています:employeeList
は値を持っており、selectedEmployees
リストは、選択された値を持っていますそれはfalse
にdisable
変数の値を変更する必要があります。
public void EnableInputText(SelectEvent event) {
for(int i=0;i<=selectedEmployees.size();i++){
for(int j=0;j<=employeeList.size();j++){
if(selectedEmployees.get(i).getId().equals(employeeList.get(j).getId()))
{
selectedEmployees.get(j).setDisable(false);
break;
}
}
}
}
しかし、上記のコードで、私はエラーを取得しています:
を10
変更 '<=' < ''へあなたのループ条件インチあなたのリストのサイズが '3'の場合、アクセスできる唯一の有効なインデックスは' 0'、 '1'、' 2'です。 – azurefrog
'for(Student student:list)'のようなfor-eachスタイルのループを使うと、この種の問題は起こりません。 – Radiodef
@azurefrogはいいいえ – 99maas