2 回答

TA貢獻1821條經驗 獲得超5個贊
讓我們快速瀏覽一下:
mapping = cfg.getTypeMapping()
.entrySet()
.stream()
.filter(e -> e.getKey().startsWith(jsonType + "|"))
.findFirst();
上面的代碼可能會獲取某種映射,獲取它的條目,然后迭代它們,以停止在startsWith(jsonType + "|").
僅此而已,并且可以很容易地用老式循環代碼重寫。
但這里的實際挑戰是::final Optional<Entry<String, String>>類Optional是在 Java 1.8 中添加到 Java 中的。
它沒有等價物。所以你的整個代碼根本無法為 Java 1.6 重寫
您可以做的最接近的事情:編寫該循環代碼,如果循環找到某些內容,則返回該結果,否則返回 null?;蛘?,您可以這樣做:
List<Entry<String, String>> firstMapping = Collections.emptyList();
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
firstMapping = Collections.singletonList(entry);
break;
}
}
return firstMapping;
或者,鑒于 OP 考慮使用com.google.common.base.Optional,您可以這樣做:
for (Entry<String, String> entries = cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
return Optional.of(entry);
}
}
return Optional.absent();
反而。
當然,永遠記?。篔ava 6 是。人們應該避免對其進行積極的開發,尤其是當必須依賴其他人來完成實際的反向移植工作時。

TA貢獻1906條經驗 獲得超3個贊
流幾乎總是可以轉換為循環。您可以創建一個 for 循環,遍歷條目集中的每個條目,檢查它是否與您在filter. 如果是,立即中斷循環
Entry<String, String> result = null;
for (Entry<String, String> entry : cfg.getTypeMapping().entrySet()) {
if (entry.getKey().startsWith(jsonType + "|")) {
result = entry;
break;
}
}
請注意Optional,我使用 null 來表示“未找到”值,而不是 。
添加回答
舉報