我想要一種方法來遍歷串列而不實際使用它的值并使用“?”創建引數化字串 查詢。
for(int i = 0; i<list.size(); i )
{
spQuery = spQuery "?,";
}
我想將上面的代碼轉換為 Java 8 Streams 代碼。最終答案應該是這樣的 - ?,?,?,?...n 其中 n 是串列的大小
uj5u.com熱心網友回復:
流不應該僅僅為了流而使用。當涉及以流暢的方式轉換資料時,它們是一個強大的工具,但對于像這樣的簡單任務,它們是矯枉過正的,代碼將更難以理解。
你可以用
String s = Stream.generate(() -> "?").limit(list.size()).collect(Collectors.joining(","));
但是將它與您已有的更簡單的版本進行比較:
for(int i = 0; i<list.size(); i ) {
spQuery = spQuery "?,";
}
在這里你可以一目了然地看到你想要做什么,而無需剖析流運算式。
uj5u.com熱心網友回復:
如果你的 List 元素是 String 型別,它應該是
String s = list.stream().collect(Collectors.joining("?,"));
但是,最后一個元素缺少“?”,所以如果你還需要最后一個元素后面的問號,你最終會得到
String s = list.stream().collect(Collectors.joining("?,")).concat("?,");
一般來說,如果你有多個附加/連接到一個字串,使用 StringBuffer 或 StringBuilder(字串是一個不可變物件)的性能更高。
如果串列元素的型別與字串不同,則必須將物件映射到字串表示形式,例如
String s = list.stream().map(listElement -> <<some code that returns a String representation of the element>>)).collect(Collectors.joining("?,")).concat("?,");
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346351.html
