150722

數據對比簡化:

有時候我們經常會有數據校驗的操作,例如對比2個數組,2個List,簡單的方式我們都懂,學校裏都教過

例:

List<person>  listA ;

List<person>  listB;

假設集合A和集合B都有10條元素,每條數據都有name屬性,現在需要判斷B集合name與A集合name相同的和不相同的,

最直接的方式是,也是我們最早接觸過的遍歷方式去對比:

String same;

String notSame;

for(int  a=0 ; a < listA.size() ; a++){

      for(int b = 0 ;b< listB.size() ; b++){

             if(listA.get(a).name().equals(listB.get(b).name()){

                            same + = listB.get(b).name() +“,”;

             }else{

                            notSame += listB.get(b).name() +",";

             }

}

}

這樣循環對比就獲取了2個字符串,same是相同name的字符串,並以逗號分隔,而notSame則相反,

這樣其實效率是比較低的,這裏我們使用了2層for循環,每個list都有10個元素的情況下,那麼其實我們循環了100次來進行對比,

那假設我們有100個,1000個元素要對比呢?那效率是極其不客觀的。


下面我們來優化該操作:

List  listA ;

List  listB;


Map<String,list>  result = new HashMap<String,list>();

for(int a = 0 ; a < listA.size(); a++){

       result.put(listA.get(a).name(),listA);

}

for(String name  : listB){

      List<person> listC = result.get(name);

      if(listC == null ){

            notSame = result.get(name).name();

      }else{

            same = result.get(name).name();

      }

}

這裏我首先遍歷集合A將10條數據都放在一個Map中,並將名字作爲KEY存放。

在遍歷集合B依次用name去get()一下,、可以看的出,系統在循環的工作上只需20次即完成了2個集合的對比。

發佈了28 篇原創文章 · 獲贊 13 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章