2016-07-14 18 views
-3

にリストして終了を反復するための最良の方法ものです。私は少なくとも1人の学生が有効なIDを持っているかどうか調べたい。リスト内のすべてに無効なIDまたは空白のIDがある場合は、存在し、例外をスローする必要があります。 Javaでこれを行う最良の方法は何ですか?私はオブジェクトの生徒のリストを持っているのjava

List<Student> students = ...; 
boolean hasValid = students.stream().anyMatch(s -> isValid(s.getId())); 

EDIT:
あなたが上がらない場合は」あなたはIDの有効性を確認するためにいくつかのメソッドを持っていると仮定すると

List<Student> Students; 
    class Student { 
    int ID; 
    String Name; 
    int Marks; 
    } 

    Student one 
    ID = 1,name = Ram,Marks = 50 

    Student two 
    ID = "",name = Syam,Marks = 60 

    Student three 
    ID = 2,name = Sudan,Marks = 70 
+2

あなたは何をしようとしたことがありますか?これは私が配列リストを反復し、学生のIDの少なくとも一方がreply.Iため –

+0

のように聞こえます。 Java 7とそれより低いバージョンで実装する方法を提案できますか? – Santosh

答えて

0
boolean isAllInvalid= true; 
for(Student student : students){ 
if(student.getID() != null && studend.getID() >=1){// this checks for a valid id 
    system.out.print(student+ " has a valid id"); 
    isAllInvalid =false; 
    break;//early exit no need to keep looping cuz we found at least one valid id ,if you to print all valid remove the break statement. 
} 
} 
if(isAllInvalid){ 
    throw new SomeException("All students are invalid") ;//choose ur suitable exception 
} 
+0

ここではループ毎にシンプルです –

+0

'IllegalArgumentException'や' IllegalStateException'のような実行時例外を投げる方が良いでしょう。一般的に、例外は投げられるべきではない。 –

+1

これはOPが要求したものではありません。それはExceptionをスローする* any * studentは無効なidを持つ。 *すべての生徒IDが無効な場合、OPは例外を持ちたいだけです。 –

0

は、最も簡単にはおそらく、Javaの8のストリーミング機能を使用することです

:有効な学生に遭遇したら、Javaの8を使用してT、あなたは常にリストをループして停止することにより、同じ動作を作成することができます
+0

おかげでJava 7と下を使用していNULLでない場合の条件としていますコード要求 – Santosh

+0

@SantoshまだJava 7であれば、それらをループすることができます。私の編集された答えを見てください。 – Mureinik

0
List<Student> students = ... 
boolean anyValid = false; 
for (Student student : students) { 
    anyValid = anyValid || isValid(student.getId()); 
} 
if (!anyValid) { 
    // throw proper Exception 
} 
+0

条件があるとき、あなたは本当に終了する必要がある場合あなたはIteratorでforeachを置き換える必要があります: Iterator studentsIterator = students.iterator(); while(!anyValid && studentsIterator.hasNext()){ anyValid = anyValid || isValid(studentsIterator.next()。getId());} – garnulf

関連する問題