List<EquipmentDeviceMessage> equipmentDeviceMessageInfo = greenThinkTanksInfoPlanMapper.getEquipmentDeviceMessageInfo(phone, startDate, endDate);
List<BladeUserVo> userList = bladexsqlMapper.getUserList();
Q
:上面兩個(gè)列表怎么使用流,根據(jù)equipmentDeviceMessageInfo中的phone字段去匹配userList 中的phone字段再獲取userList 中是name賦值給equipmentDeviceMessageInfo 中的name。A
:以前的寫法是通過for循環(huán)遍歷一個(gè)一個(gè)去查詢賦值,這樣的話如果數(shù)據(jù)多的話一個(gè)一個(gè)遍歷會(huì)查詢的話肯定是很慢的,下面的方法是通過List中的stream流去匹配并賦值。
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class StreamExample {
public static void main(String[] args) {
List<EquipmentDeviceMessage> equipmentDeviceMessageInfo = greenThinkTanksInfoPlanMapper.getEquipmentDeviceMessageInfo(phone, startDate, endDate);
List<BladeUserVo> userList = bladexsqlMapper.getUserList();
// 將userList轉(zhuǎn)換為Map,以phone為鍵,name為值
Map<String, String> userMap = userList.stream()
.collect(Collectors.toMap(BladeUserVo::getPhone, BladeUserVo::getName));
// 遍歷equipmentDeviceMessageInfo,根據(jù)phone匹配userMap,將name賦值給equipmentDeviceMessageInfo中的name字段
equipmentDeviceMessageInfo.forEach(equipment -> {
String phone = equipment.getPhone();
if (userMap.containsKey(phone)) {
equipment.setName(userMap.get(phone));
}
});
}
}
首先使用流將userList轉(zhuǎn)換為一個(gè)Map,以phone作為鍵,name作為值。接著,使用forEach方法遍歷equipmentDeviceMessageInfo列表,根據(jù)phone匹配userMap,如果找到匹配項(xiàng),則將對應(yīng)的name賦值給equipmentDeviceMessageInfo中的name字段。文章來源:http://www.zghlxwxcb.cn/news/detail-723559.html
通過使用流,可以更加高效地處理大量數(shù)據(jù),并且代碼更簡潔易讀。文章來源地址http://www.zghlxwxcb.cn/news/detail-723559.html
到了這里,關(guān)于Java中通過List中的stream流去匹配相同的字段去賦值,避免for循環(huán)去查詢數(shù)據(jù)庫進(jìn)行賦值操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!