2017-08-28 15 views
0

私はストリングのリストを持っていますList<String> treeList。最後の4つの要素とそれぞれの要素の定義済みの文字列を比較したいと思います。それをする最善の方法は何ですか?リスト要素を比較する最も良い方法

思った一つのアプローチは

String firstParent = treeList.get(treeList.size() - 1); 
String secondParent = treeList.get(treeList.size() - 2); 
String thirdParent = treeList.get(treeList.size() - 3); 
String fourthParent = treeList.get(treeList.size() - 4); 

if(firstParent.equals("a") && secondParent.equals("b") && thirdParent.equals("c") && fourthParent.equals("d")) { 
    return true; 
} 

で利用できる任意の少ないタイプミスの方法がありますか?リストの比較は、2、3、または4つの要素に対して行うことができます。

+0

あなたはそれぞれを比較したいので、 4つの最後の要素を別の文字列に変換すると、コードを凝縮しようとすると実際に読むのが難しくなります。私はこれのために素朴な方法を保つと言うでしょう。 – Joel

答えて

6

あなたはサブリストを取得し、値の独自のリストにそれを比較することができます

List<String> expected = Arrays.asList("a", "b", "c", "d"); 
List<String> actual = treeList.subList(treeList.size() - 4, treeList.size()); 
if (actual.equals(expected)) { 
    return true; 
} 
+1

'treeList.size() - 4'が負の値を返すとどうなりますか? –

+2

@NikolasCharalambidisなぜ私に尋ねていますか? OPに相談してください。 – shmosel

+2

treeList.size() - 4は負であってはいけません。これはfunctionを呼び出すことによって保証されます。 –

0

あなたが最初のリストは十分な要素があることを確認、一覧から派生した文字列から文字列の比較を行っている場合、またはIndexOutOfBoundsExceptionが得られます。文字列を比較するときには、チェックされている最初の値がnullでないことを確認することは常に良いですので、私は同様)(.equalsへの呼び出しを変更します...

if(treeList.size() >=4 && "a".equals(firstParent) && "b".equals(secondParent) && "c".equals(thirdParent) && "d".equals(fourthParent)){ // etc... }

関連する問題