所以我在一些 UI 代码中遇到了这个函数,我试图在 Java 中复制这些代码以了解有关该语言的更多信息。
//dataRows is of type List<String[]> that contains lines from a csv
const hasQuotes = dataRows.some(dataRow => (
dataRow.slice(1).some(value => value.toString().includes('"'))
));
我一直在试图找出如何有效地复制这个 Java,我尝试使用 stream() 中的 anyMatch() 但我无法弄清楚如何在原始函数中嵌套次要函数。
最佳答案
您可以使用 java.util.stream
包裹。 List
我们继承了一个 stream
method来自 Collection
要获取集合的流以及其中的数组,您可以获得 Stream
通过 Arrays.stream
方法。流有 anyMatch
.所以
final boolean hasQuotes = dataRows.stream().anyMatch(dataRow ->
Arrays.stream(dataRow, 1, dataRow.length).anyMatch(value -> value.indexOf('"') != -1)
);
...或者类似的东西。稍微详细一点的版本:
final boolean hasQuotes = dataRows.stream().anyMatch(dataRow -> {
return Arrays.stream(dataRow, 1, dataRow.length).anyMatch(value -> {
return value.indexOf('"') != -1);
});
});
旁注:最初我有 String.valueOf(value)
而不仅仅是 value
以上,忠实于 JavaScript 原件,但如果你有一个 List<String[]>
,你不需要那个;你知道 value
是 String
.
关于javascript - 如何将 JS 嵌套的 some() 逻辑转换为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58998162/