【Java】——list中快速進行資料篩選
阿新 • • 發佈:2019-02-04
小編最近的專案中經常需要多個list拼接成一個,才能進行之後的操作,如何保證多個list拼接是一條資料呢?大家都知道list不能根據唯一標識進行篩選,那豈不成需要迴圈依次遍歷,考慮系統處理的資料量,這個執行起來那是相當影響程式的執行效率了,不能這樣將就啊,所以肯定能尋找到更好的方法!
記得看瘋狂Java的時候集合和Map是放到同一章節的,而且Map最擅長就是檢索,所以小編轉換了一下思路,把上述用到的list,轉換成Map<id,list>,這樣在使用的時候就可以通過id,查詢出對應的list,之後進行資料拼接,完美實現效果。
業務場景
批量匯入學生成績,但是匯入的是學生的成績,而存到資料庫中卻需要學生id,其中需要學號到學生id的轉換。根據學號,查詢對應的學生id存放到list中,將查詢出來的學生id和學號匹配起來存到匯入的時候解析出來的list中
程式碼實現:
目前小編用到的就是這種方案,其中相比迴圈放到Map中再取出的方式簡便許多,但是小編不知道是否還有更好的方案,如還有更好的方案,希望各位大神不惜賜教,小編不勝感激!List<StudentModel> studentModelList = studentFacade.queryStudentInfoByCodes(studentCodes); //將學生id放到對應的Map中 HashMap<String,String> studentCodeAndId = new HashMap<>(); for (StudentModel studentModel:studentModelList){ studentCodeAndId.put(studentModel.getStudentCode(),studentModel.getId()); } for (int i = 0 ;i<studentAndScoreModelList.size();i++){ StudentAndScoreModel studentAndScoreModel = studentAndScoreModelList.get(i); studentAndScoreModel.setStudentId(studentCodeAndId.get(studentAndScoreModel.getStudentCode())); }