ChatGPT 實驗輔助幫助寫 code 真的挺方便的

最近開始玩 ChatGPT




找尋如何好好善用的過程、挺有趣的。

今天來試著用它來幫助回答 stackoverflow 


一開始遇到這題:

AsynchronousServerSocketChannel vs ServerSocketChannel performance



題目其實並不是很精準, 不曉得怎麼回答. 


但這或許是 ChatGPT 的強項^^



直接把答案貼給他. 

 

問題: Creating Supplier stream of Stream


第二題就有點意思了, 因為我不曉得 Java 的 Supplier interface 

於是問 chatGPT, 他給的回答還蠻詳盡的:


這個 example 是能執行的, 

Github 程式



執行結果:




Supplier 本身實踐方式很單純: 


而這行:

   Supplier<Integer> randomIntSupplier = () -> random.nextInt();


就是用 Java lambda 把 get() 實作出來

  Integer get() { return random.next(); }

有了 Supplier 這個 interface, 就更能做到泛型, 更好的將函氏抽象定義, 

實現 Functional Programming. 


回到 Stackoverflow 原本的問題, 


其實也有人有回應, Java stream 的 document 也有提到:

A stream should be operated on (invoking an intermediate or terminal stream operation) only once. 

This rules out, for example, "forked" streams, where the same source feeds two or more pipelines, or multiple traversals of the same stream. 

A stream implementation may throw IllegalStateException if it detects that the stream is being reused. 

However, since some stream operations may return their receiver rather than a new stream object, it may not be possible to detect reuse in all cases.


來實驗看看:

首先來造個 IntStream


來問問怎麼把 intStream 轉成 Stream<String>
chatGPT 還給了幾種方式:




還可以問他怎麼把這個 Stream<String> 顯示出來: 



接著實驗使用兩次 Stream. 
的確產生了


來問問 chatGPT




詢問怎麼從 Stream<String> 轉到 List<String>


修改程式 code - github


執行結果:

成功. 

VSCode 似乎開始整合了, 畢竟 openAI 微軟 2019 年也加碼投資

VSCode + openGPT


看將來 Google 的 android studio 能否做一個類似的.^^


PS: collect 這個寫法也很巧妙, 原本問題中的 2 其實是 bulksize, 
可以透過 collect() 重新 group 起來.  
 





留言

熱門文章