java日常小筆記
阿新 • • 發佈:2021-02-04
技術標籤:java
日常使用java程式碼方法
lambda表示式
使用流分頁:
List<String> midNumbers = new ArrayList<>();
// 分組
Long limit = (midNumbers.size() + 100 - 1) / 100;
List<List<String>> splitList = Stream.iterate(0, n -> n + 1)
.limit(limit) .parallel()
.map(num -> {
return midNumbers.stream().skip(num * 100).limit(100).parallel().collect(Collectors.toList());
}).collect(Collectors.toList());
int size = splitList.size();
for (int i = 0; i < size; i++){
List<String> numbers = splitList.get(i);
// todo
}
獲取集合某個屬性集合:
List<String> xx = 物件集合.stream().map(e -> String.valueOf(e.getXxxx())).collect(toList());
集合去重:
List<String> xxx = xxxs.stream().distinct().collect(toList());
兩個物件集合根據某欄位去重複:
List<xx> lits1;
List<xx> lits2;
List<xx> distinct = lits1.parallelStream().filter(item1 -> !list2.contains(item1.getXxxx())).collect(Collectors.toList());
根據某個屬性獲取物件:
List<XX> cc;
XX xx = cc.stream().filter(item -> String.valueOf(item.getXxx()).equals("字串")).findAny().orElse(null);
對某欄位去重:
List<XXX> unique = XX.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(()
-> new TreeSet<>(Comparator.comparing(XXX::getXxx))),ArrayList::new));
根據物件分組 轉換Map:
List<XXX> ccc;
Map<String, List<XXX>> xxx = ccc.stream().collect(Collectors.groupingBy(XXX::getXxxx));
非同步處理方法呼叫
使用Thread():
// 非同步處理
new Thread(() -> {
//呼叫方法
}
使用 @Async註釋:
/**
*非同步處理方法
*/
@Async
public void xxx(Object obj){
//處理內容
}
使用RestTemplate下載檔案到指定路徑
//定義請求頭的接收型別
RequestCallback requestCallback = request -> request.getHeaders()
.setAccept(Arrays.asList(MediaType.APPLICATION_OCTET_STREAM, MediaType.ALL));
//對響應進行流式處理而不是將其全部載入到記憶體中
String finalFilePath = filePath;//指定路徑
RestTemplate restTemplate = new RestTemplate();
restTemplate.execute(url, HttpMethod.GET, requestCallback, clientHttpResponse -> {
Files.copy(clientHttpResponse.getBody(), Paths.get(finalFilePath));
return null;
});