2017-04-13 26 views
0

ここで何が間違っているか教えてください。このコード部分を追加するまで私のコードは問題ありません。(!tmp.isEmpty()){return e.isEmpty(); } エラーがある:私は下に次のコードを書き換えるしようとしていますanyMatchを使用してメソッドstartsWithを解決できません

@Test 
    public void TestData() { 
     ArrayList<String> rootOpts = new ArrayList<String>(); 
     rootOpts.add("aa"); 
     rootOpts.add("bb"); 
     rootOpts.add("ac"); 
     ArrayList<String> allSiblings = new ArrayList<String>(); 
     allSiblings.add("aa"); 
     allSiblings.add("ac"); 
     allSiblings.add("abc"); 

     System.out.println("allMatch " + rootOpts.stream() 
       .map((e) -> { 
        System.out.println("e = " + e); 
        List<String> tmp = new ArrayList<String>(); 
        tmp.addAll(allSiblings); 
        String[] CHs = {"ab","aa","ac"}; 
        for (String chh : CHs) { 
         tmp.remove(chh); 
        } 
        if (!tmp.isEmpty()) { 
         return e.isEmpty(); 
        } 
        return e; 
       }) 
       .anyMatch(v -> v.startsWith("a"))); 
    } 

(このコードは真のブール値を返すことになっている方法に含まれているのメソッドのstartsWith(java.lang.String)を解決できません。またはfalse):

for (Option e : rootOpts) { 
      List<String> tmp = new ArrayList<String>(); 
      tmp.addAll(allSiblings); 
      if (e.getData() != null && !e.getData().getString().isEmpty()) { 
       String[] chs = {"ab","aa","ac"}; 
       for (String ch : chs) { 
        tmp.remove(ch); 
       } 
      } else { 
       return false; 
      } 
      if (!tmp.isEmpty()) { 
       return false; 
      } 
     } 
     return true; 

booleanを返しe.isEmpty()あなたの助けみんな

答えて

0

いただきありがとうございます。次のメソッドanyMatchではbooleanのメソッドstartsWithを呼び出すが、このメソッドはbooleanには存在しない。 e.isEmpty()はタイプBooleanでありながらタイプStringである

  if (!tmp.isEmpty()) { 
       return ""; //or whatever string makes sense 
      } 
+0

これを追加しても機能しません。if(!tmp.isEmpty()){ return new ArrayList(); }。ここでの私の目標は、実際に私のtmpリストが空でない場合、私はfalseを返すことになっています。 –

0

e:だからあなたのコードが変更に。

したがって、関数の戻り値の型はObjectです。

最後に、Objectは、元のStringタイプとは逆に、コンパイラが不平を言っている理由でstartsWithの機能を持っていません。

0

isEmpty()の返品タイプ - booleanをご覧ください。 boolean true/falsestartsWithをどのように計画していますか? :)ストリームはブール値を取得する可能性があると予測し、したがってそれをstartsWithにすることはできません。

if (!tmp.isEmpty()) { 
    return e.isEmpty(); 
} 
関連する問題