當集合過大,單次處理資料對資料庫造成壓力時,必須考慮分批分片處理資料。比如 oracle資料庫中in引數個數不能超過1000 ,這時可以把引數進行分批處理。當然這種情況也可 用表關聯代替in:.在where條件中使用子查詢,如「select * from b where c in (select d from e …)」 或者 可以拆分sql用 where id in (1, 2, …, 999) or id in (1000, …)這種方法解決 。本文則側重講解如何分片集合。
public
class
sublist
; list
list = arrays.
aslist
(str)
; list
> splitlist =
splitlist
(list,6)
; splitlist.
stream()
.foreach
(system.out:
:println);}
/** * 指定大小,分割集合,將集合按照規定個數分為n個部分
*/public
static
list
>
splitlist
(list
list,
int length)
//result 最終分片後結果
list
> result =
newarraylist
>()
;int size = list.
size()
; system.out.
println
("分片前list大小: "
+ size)
;//count分片大小
int count =
(size + length -1)
/ length;
system.out.
println
("每片大小為 "
+ length +
";共分為 "
+ count +
" 片");
for(
int i =
0; i < count; i++
)return result;
}}
輸出結果:
分片前list大小: 13
每片大小為 6;共分為 3 片
[a1, b2, c3, d4, e5, f6]
[g7, h8, i9, j10, k11, l12]
[m13]
Collection集合,List集合
一 collection集合 a collection 集合 單身漢集合 list 特點 有序,可重複,有索引 arraylist 重點掌握 linkedlist 儲存的元素不可重複,訪問順序一致 set 無序,元素不可重複,元素無索引 hashset 重點掌握 linkedhashset tree...
List集合 Set集合
一 請簡述list介面的特點。v 它是乙個元素訪問有序的集合。例如,存元素的順序是11 22 33。那麼集合中,元素的儲存就是按照11 22 33的順序完成的 v 它是乙個帶有索引的集合,通過索引就可以精確的操作集合中的元素 與陣列的索引是乙個道理 v 集合中可以有重複的元素,通過元素的equals...
關於list集合
list雖然是啥都能放的集合,在不加泛型限制的情況下,是什麼都能放進去,放進去了,也能直接get拿出來。但是如果用了foreach迴圈,或者是迭代器,foreach迴圈和迭代器是有條件的迭代出集合裡面的值!就好比下面的例子 首先宣告alist是乙個list集合 public void foreach...