私の質問は、JAVA8を使用したラムダとフィルタの使用に関するものです。 これは、さまざまな応答コードをテストするために、JavaのSelenium経由で行われます。マッピングとフィルタリングのレスポンスコードでJavaストリームを使用する
ストリームを使用して以下の関数を変換するには、ラムダをできるだけ簡単に使用できますか?
ストリームに次のように私はリファクタリングしたいコードがあり、Javaの8のラムダ:
for (int i = 0; i < links.size(); i++) {
if (!(links.get(i).getAttribute("href") == null) && !(links.get(i).getAttribute("href").equals(""))) {
// Find HTTP Status-Code
try {
statusCode = getResponseCode(links.get(i).getAttribute("href").trim());
} catch (IOException e) {
e.printStackTrace();
}
// Check broken link
if (statusCode== 404) {
System.out.println("Broken of Link# "+i+" "+links.get(i).getAttribute("href"));
}
else if (statusCode== 400) {
System.out.println("Bad Request# "+i+" "+links.get(i).getAttribute("href"));
}
else if (statusCode== 401) {
System.out.println("Unauthorized# "+i+" "+links.get(i).getAttribute("href"));
}
else if (statusCode== 403) {
System.out.println("Forbidden# "+i+" "+links.get(i).getAttribute("href"));
}
else if (statusCode== 500) {
System.out.println("Internal server error# "+i+" "+links.get(i).getAttribute("href"));
}
}
}
私は今のところ持っていることである:
私は一緒に何かをしようとしていたList<AbstractMap.SimpleImmutableEntry<String,Integer>> variablename =
links.stream().map(WebElement::getAttribute("href"));
500,403,401,400,404ではないすべてのものをフィルタリングし、マッピング(linkString、responseCode)のようなものを保持しているだけですが、ラムダを使って正しく動作させるにはちょっとした問題がありますか?
EDIT1: 私はできるように私は、この例ではちょうどそれをできるだけ多く利用するために、ストリームを介しすべてをかけるために
フィルタはこれらのエラーコードに固有のものである必要がありますか、範囲を使用できますか? (2xxと3xx応答は一般的に成功戻りコードとみなされ、4xx&5xxはエラー戻りコードです)。これにより、より一般的なコードを短くすることができます。 – Aaron
あなたは 'System.out'呼び出しを保持しますか? – tddmonkey
私はちょうど範囲を使用すると完璧でなければならないと思います。なぜなら4xxと5xxはエラーリターンコードだからです。 @Aaron –