最近搞了點java,因為寫代碼的手感問題,順便寫了個java的數組pipe()流,用法與stream()基本一樣.
文件地址
戳這 如果你們覺得文件有一點點幫助,謝謝留下星星.(Android與java后端都可以使用)
為什么會有這個文件?
因為stream()有些api有些不符合我的需求,而java無法為已有類添加拓展方法限制了我只能自己構建一個流操作. 我有個業務需要一個firstWhere找出某個符合條件的元素, 元素可為空, stream我沒有找到這個API,所以當我看到java的@FunctionalInterface這個語法的時候就決定寫一個.
我是一個iOS開發,我習慣了swift提供給我的那些API語法
比如
- firstWhere 條件判斷篩選元素
- prefix 篩選前幾個
- suffix 帥選后幾個
- contain 條件判斷是否包含某個元素
- Interger 數組separator join 變成分隔符字符串
- map
- filter
- compactMap等等
為什么只有一個文件?
沒有demo,是因為我希望大家有空可以看看源碼,源碼真的簡單的要死.
API設計的小建議
pipe的鏈式調用 當下一個輸出有可能是數組的時候,那他必須是SequenceOperator的返回 當下個輸出是單個元素的時候,可以直接返回
帖個簡單的用例
List<Integer> list = Arrays.asList(2, 3, 4, 5, 6);
String idss = SequenceOperator.build(list)
.map(Object::toString)
.map(Integer::parseInt)
.filter((e) -> e % 2 == 0)
.join(",");
List<Integer> collect = SequenceOperator.build(list)
.map((e) -> e + 1)
.collect();
PS
stream()的api絕大部分情況下都是十分強大的,所以如果沒有我這種特殊需求的話,還是用stream()的API更安全點,java官方代碼的安全性絕對遠高于我這種簡單寫法一萬倍.