1. 程式人生 > >【Java】——list中快速進行資料篩選

【Java】——list中快速進行資料篩選

    小編最近的專案中經常需要多個list拼接成一個,才能進行之後的操作,如何保證多個list拼接是一條資料呢?大家都知道list不能根據唯一標識進行篩選,那豈不成需要迴圈依次遍歷,考慮系統處理的資料量,這個執行起來那是相當影響程式的執行效率了,不能這樣將就啊,所以肯定能尋找到更好的方法!

    記得看瘋狂Java的時候集合和Map是放到同一章節的,而且Map最擅長就是檢索,所以小編轉換了一下思路,把上述用到的list,轉換成Map<id,list>,這樣在使用的時候就可以通過id,查詢出對應的list,之後進行資料拼接,完美實現效果。

業務場景

    批量匯入學生成績,但是匯入的是學生的成績,而存到資料庫中卻需要學生id,其中需要學號到學生id的轉換。根據學號,查詢對應的學生id存放到list中,將查詢出來的學生id和學號匹配起來存到匯入的時候解析出來的list中

程式碼實現:

        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()));
        }
    目前小編用到的就是這種方案,其中相比迴圈放到Map中再取出的方式簡便許多,但是小編不知道是否還有更好的方案,如還有更好的方案,希望各位大神不惜賜教,小編不勝感激!