集合差異比較演算法及效能測試

Yuloran發表於2019-01-14

專案經驗,如需轉載,請註明作者:Yuloran (t.cn/EGU6c76)

前言

筆者之前做專案的時候,寫過一個小演算法,用來實現兩張表的資料同步。因為移動端的資料量一般也就幾千條,所以便沒有關注效能問題。最近開始面試,由於沒做過效能測試,只能根據經驗判斷,想了想還是靠資料說話比較好。

演算法

集合差異比較演算法及效能測試

集合 A 是新集合,集合 B 是老集合,現需要篩選出集合 A 中的新增元素、已更新元素以及集合 B 中的已刪除元素。演算法如上圖所示:

  1. 使用 sql 語句按 id 升序分別讀取兩張表的記錄並儲存至集合 A 和集合 B 中(id 為自增長的 int 型別)
  2. 分別從集合 A 和集合 B 中取出一個元素 a 和 b,比較其 id:
    • 若 a 的 id 小於 b 的 id,說明 a 是新增元素,將 a 新增到新增元素集合中,然後從集合 A 中刪除 a 同時 i–,這樣下一次迴圈時,便可以取 a 的下一個元素與 b 再次進行比較
    • 若 a 的 id 大於 b 的 id,說明 b 是已刪除元素,將 b 新增到已刪除元素集合中,然後從集合 B 中刪除 b 同時 i–,這樣下一次迴圈時,便可以取 b 的下一個元素與 a 再次進行比較
    • 若 a 的 id 等於 b 的 id,則進一步判斷 a.equals(b),若為 false,說明 a 是已更新元素,將 a 新增到已更新元素集合,然後繼續下一次迴圈
  3. 因為迴圈比較的次數為 Math.max(A.size(), B.size()),所以當分別從集合 A 和集合 B 中取出一個元素 a 和 b 時,可能 a 為 null 或者 b 為 null,但不可能 a 和 b 都為 null:
    • 若 a 為 null,說明集合A 已經遍歷結束,b 為已刪除元素,將 b 新增到已刪除元素集合,然後進行下一次迴圈
    • 若 b 為 null,說明集合B 已經遍歷結束,a 為新增元素,將 a 新增到新增元素集合,然後進行下一次迴圈

程式碼實現

/* * Copyright (C) 2018 Yuloran(https://github.com/Yuloran) * * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
package com.yuloran.wanandroid_java.ui;
import com.yuloran.lib_core.utils.Logger;
import java.util.ArrayList;
import java.util.List;
/** * [集合比較工具] * <
p>
* Author: Yuloran * Date Added: 2019/1/14 19:45 * * @since 1.0.0 */
public final class DiffUtil{
private static final String TAG = "DiffUtil";
private DiffUtil() {

} private static class Bean {
int id;
String name;
private Bean(int id, String name) {
this.id = id;
this.name = name;

} @Override public boolean equals(Object o) {
if (this == o) {
return true;

} if (o == null || getClass() != o.getClass()) {
return false;

} Bean bean = (Bean) o;
if (id != bean.id) {
return false;

} return name.equals(bean.name);

} @Override public int hashCode() {
int result = id;
result = 31 * result + name.hashCode();
return result;

} @Override public String toString() {
return "Bean{" + "name='" + name + '\'' + '
}'
;

}
} public static void calculateDiff() {
List<
Bean>
originalList = generateOriginalList();
List<
Bean>
latestList = generateLatestList();
List<
Bean>
added = new ArrayList<
>
();
List<
Bean>
deleted = new ArrayList<
>
();
List<
Bean>
updated = new ArrayList<
>
();
long timestamp = System.currentTimeMillis();
for (int i = 0;
i <
Math.max(originalList.size(), latestList.size());
i++) {
Bean original = getSafely(i, originalList);
Bean latest = getSafely(i, latestList);
if (original == null) {
added.add(latest);
continue;

} if (latest == null) {
deleted.add(original);
continue;

} if (latest.id >
original.id) {
deleted.add(original);
originalList.remove(i);
i--;

} else if (latest.id <
original.id) {
added.add(latest);
latestList.remove(i);
i--;

} else {
if (!latest.equals(original)) {
updated.add(latest);

}
}
} Logger.debug(TAG, "calculateDiff cost %dms.", (System.currentTimeMillis() - timestamp));
Logger.debug(TAG, "added: %s", added);
Logger.debug(TAG, "deleted: %s", deleted);
Logger.debug(TAG, "updated: %s", updated);

} private static List<
Bean>
generateOriginalList()
{
List<
Bean>
originalList = new ArrayList<
>
();
for (int i = 0;
i <
10000;
i++) {
originalList.add(new Bean(i, "bean_" + String.valueOf(i)));

} return originalList;

} private static List<
Bean>
generateLatestList()
{
List<
Bean>
latestList = new ArrayList<
>
();
for (int i = 0;
i <
10500;
i++) {
if (i <
1000) {
if (i % 2 == 0) {
continue;

}
} if (i >
1000 &
&
i <
2000) {
if (i % 3 == 0) {
latestList.add(new Bean(i, "multiple_of_3_bean_" + String.valueOf(i)));
continue;

}
} latestList.add(new Bean(i, "bean_" + String.valueOf(i)));

} return latestList;

} private static Bean getSafely(int i, List<
Bean>
list)
{
if (i >
= 0 &
&
i <
list.size()) {
return list.get(i);

} return null;

}
}複製程式碼

以上程式碼片段只是示例,專案中需要使用請自行優化程式碼結構。

效能測試

顯然,上述所示演算法的漸進時間複雜度為 O(n),其中最大的問題就是 ArrayList 的 remove 操作,這會導致後續元素需要挨個向前拷貝一次。使用 LinkedList 可以避免元素的拷貝,但是是否可以降低演算法執行時間呢?筆者做了個測試:

  1. 使用 ArrayList:
2019-01-14 22:15:55.972 3050-3050/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 23ms.2019-01-14 22:15:55.973 3050-3050/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_10000'
}, Bean{name='bean_10001'
}, Bean{name='bean_10002'
}, Bean{name='bean_10003'
}, Bean{name='bean_10004'
}, Bean{name='bean_10005'
}, Bean{name='bean_10006'
}, Bean{name='bean_10007'
}, Bean{name='bean_10008'
}, Bean{name='bean_10009'
}, Bean{name='bean_10010'
}, Bean{name='bean_10011'
}, Bean{name='bean_10012'
}, Bean{name='bean_10013'
}, Bean{name='bean_10014'
}, Bean{name='bean_10015'
}, Bean{name='bean_10016'
}, Bean{name='bean_10017'
}, Bean{name='bean_10018'
}, Bean{name='bean_10019'
}, Bean{name='bean_10020'
}, Bean{name='bean_10021'
}, Bean{name='bean_10022'
}, Bean{name='bean_10023'
}, Bean{name='bean_10024'
}, Bean{name='bean_10025'
}, Bean{name='bean_10026'
}, Bean{name='bean_10027'
}, Bean{name='bean_10028'
}, Bean{name='bean_10029'
}, Bean{name='bean_10030'
}, Bean{name='bean_10031'
}, Bean{name='bean_10032'
}, Bean{name='bean_10033'
}, Bean{name='bean_10034'
}, Bean{name='bean_10035'
}, Bean{name='bean_10036'
}, Bean{name='bean_10037'
}, Bean{name='bean_10038'
}, Bean{name='bean_10039'
}, Bean{name='bean_10040'
}, Bean{name='bean_10041'
}, Bean{name='bean_10042'
}, Bean{name='bean_10043'
}, Bean{name='bean_10044'
}, Bean{name='bean_10045'
}, Bean{name='bean_10046'
}, Bean{name='bean_10047'
}, Bean{name='bean_10048'
}, Bean{name='bean_10049'
}, Bean{name='bean_10050'
}, Bean{name='bean_10051'
}, Bean{name='bean_10052'
}, Bean{name='bean_10053'
}, Bean{name='bean_10054'
}, Bean{name='bean_10055'
}, Bean{name='bean_10056'
}, Bean{name='bean_10057'
}, Bean{name='bean_10058'
}, Bean{name='bean_10059'
}, Bean{name='bean_10060'
}, Bean{name='bean_10061'
}, Bean{name='bean_10062'
}, Bean{name='bean_10063'
}, Bean{name='bean_10064'
}, Bean{name='bean_10065'
}, Bean{name='bean_10066'
}, Bean{name='bean_10067'
}, Bean{name='bean_10068'
}, Bean{name='bean_10069'
}, Bean{name='bean_10070'
}, Bean{name='bean_10071'
}, Bean{name='bean_10072'
}, Bean{name='bean_10073'
}, Bean{name='bean_10074'
}, Bean{name='bean_10075'
}, Bean{name='bean_10076'
}, Bean{name='bean_10077'
}, Bean{name='bean_10078'
}, Bean{name='bean_10079'
}, Bean{name='bean_10080'
}, Bean{name='bean_10081'
}, Bean{name='bean_10082'
}, Bean{name='bean_10083'
}, Bean{name='bean_10084'
}, Bean{name='bean_10085'
}, Bean{name='bean_10086'
}, Bean{name='bean_10087'
}, Bean{name='bean_10088'
}, Bean{name='bean_10089'
}, Bean{name='bean_10090'
}, Bean{name='bean_10091'
}, Bean{name='bean_10092'
}, Bean{name='bean_10093'
}, Bean{name='bean_10094'
}, Bean{name='bean_10095'
}, Bean{name='bean_10096'
}, Bean{name='bean_10097'
}, Bean{name='bean_10098'
}, Bean{name='bean_10099'
}, Bean{name='bean_10100'
}, Bean{name='bean_10101'
}, Bean{name='bean_10102'
}, Bean{name='bean_10103'
}, Bean{name='bean_10104'
}, Bean{name='bean_10105'
}, Bean{name='bean_10106'
}, Bean{name='bean_10107'
}, Bean{name='bean_10108'
}, Bean{name='bean_10109'
}, Bean{name='bean_10110'
}, Bean{name='bean_10111'
}, Bean{name='bean_10112'
}, Bean{name='bean_10113'
}, Bean{name='bean_10114'
}, Bean{name='bean_10115'
}, Bean{name='bean_10116'
}, Bean{name='bean_10117'
}, Bean{name='bean_10118'
}, Bean{name='bean_10119'
}, Bean{name='bean_10120'
}, Bean{name='bean_10121'
}, Bean{name='bean_10122'
}, Bean{name='bean_10123'
}, Bean{name='bean_10124'
}, Bean{name='bean_10125'
}, Bean{name='bean_10126'
}, Bean{name='bean_10127'
}, Bean{name='bean_10128'
}, Bean{name='bean_10129'
}, Bean{name='bean_10130'
}, Bean{name='bean_10131'
}, Bean{name='bean_10132'
}, Bean{name='bean_10133'
}, Bean{name='bean_10134'
}, Bean{name='bean_10135'
}, Bean{name='bean_10136'
}, Bean{name='bean_10137'
}, Bean{name='bean_10138'
}, Bean{name='bean_10139'
}, Bean{name='bean_10140'
}, Bean{name='bean_10141'
}, Bean{name='bean_10142'
}, Bean{name='bean_10143'
}, Bean{name='bean_10144'
}, Bean{name='bean_10145'
}, Bean{name='bean_10146'
}, Bean{name='bean_10147'
}, Bean{name='bean_10148'
}, Bean{name='bean_10149'
}, Bean{name='bean_10150'
}, Bean{name='bean_10151'
}, Bean{name='bean_10152'
}, Bean{name='bean_10153'
}, Bean{name='bean_10154'
}, Bean{name='bean_10155'
}, Bean{name='bean_10156'
}, Bean{name='bean_10157'
}, Bean{name='bean_10158'
}, Bean{name='bean_10159'
}, Bean{name='bean_10160'
}, Bean{name='b2019-01-14 22:15:55.974 3050-3050/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_3542019-01-14 22:15:55.975 3050-3050/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{na複製程式碼
  1. 使用 LinkedList:
2019-01-14 22:19:25.110 4432-4432/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 362ms.2019-01-14 22:19:25.113 4432-4432/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_10000'
}, Bean{name='bean_10001'
}, Bean{name='bean_10002'
}, Bean{name='bean_10003'
}, Bean{name='bean_10004'
}, Bean{name='bean_10005'
}, Bean{name='bean_10006'
}, Bean{name='bean_10007'
}, Bean{name='bean_10008'
}, Bean{name='bean_10009'
}, Bean{name='bean_10010'
}, Bean{name='bean_10011'
}, Bean{name='bean_10012'
}, Bean{name='bean_10013'
}, Bean{name='bean_10014'
}, Bean{name='bean_10015'
}, Bean{name='bean_10016'
}, Bean{name='bean_10017'
}, Bean{name='bean_10018'
}, Bean{name='bean_10019'
}, Bean{name='bean_10020'
}, Bean{name='bean_10021'
}, Bean{name='bean_10022'
}, Bean{name='bean_10023'
}, Bean{name='bean_10024'
}, Bean{name='bean_10025'
}, Bean{name='bean_10026'
}, Bean{name='bean_10027'
}, Bean{name='bean_10028'
}, Bean{name='bean_10029'
}, Bean{name='bean_10030'
}, Bean{name='bean_10031'
}, Bean{name='bean_10032'
}, Bean{name='bean_10033'
}, Bean{name='bean_10034'
}, Bean{name='bean_10035'
}, Bean{name='bean_10036'
}, Bean{name='bean_10037'
}, Bean{name='bean_10038'
}, Bean{name='bean_10039'
}, Bean{name='bean_10040'
}, Bean{name='bean_10041'
}, Bean{name='bean_10042'
}, Bean{name='bean_10043'
}, Bean{name='bean_10044'
}, Bean{name='bean_10045'
}, Bean{name='bean_10046'
}, Bean{name='bean_10047'
}, Bean{name='bean_10048'
}, Bean{name='bean_10049'
}, Bean{name='bean_10050'
}, Bean{name='bean_10051'
}, Bean{name='bean_10052'
}, Bean{name='bean_10053'
}, Bean{name='bean_10054'
}, Bean{name='bean_10055'
}, Bean{name='bean_10056'
}, Bean{name='bean_10057'
}, Bean{name='bean_10058'
}, Bean{name='bean_10059'
}, Bean{name='bean_10060'
}, Bean{name='bean_10061'
}, Bean{name='bean_10062'
}, Bean{name='bean_10063'
}, Bean{name='bean_10064'
}, Bean{name='bean_10065'
}, Bean{name='bean_10066'
}, Bean{name='bean_10067'
}, Bean{name='bean_10068'
}, Bean{name='bean_10069'
}, Bean{name='bean_10070'
}, Bean{name='bean_10071'
}, Bean{name='bean_10072'
}, Bean{name='bean_10073'
}, Bean{name='bean_10074'
}, Bean{name='bean_10075'
}, Bean{name='bean_10076'
}, Bean{name='bean_10077'
}, Bean{name='bean_10078'
}, Bean{name='bean_10079'
}, Bean{name='bean_10080'
}, Bean{name='bean_10081'
}, Bean{name='bean_10082'
}, Bean{name='bean_10083'
}, Bean{name='bean_10084'
}, Bean{name='bean_10085'
}, Bean{name='bean_10086'
}, Bean{name='bean_10087'
}, Bean{name='bean_10088'
}, Bean{name='bean_10089'
}, Bean{name='bean_10090'
}, Bean{name='bean_10091'
}, Bean{name='bean_10092'
}, Bean{name='bean_10093'
}, Bean{name='bean_10094'
}, Bean{name='bean_10095'
}, Bean{name='bean_10096'
}, Bean{name='bean_10097'
}, Bean{name='bean_10098'
}, Bean{name='bean_10099'
}, Bean{name='bean_10100'
}, Bean{name='bean_10101'
}, Bean{name='bean_10102'
}, Bean{name='bean_10103'
}, Bean{name='bean_10104'
}, Bean{name='bean_10105'
}, Bean{name='bean_10106'
}, Bean{name='bean_10107'
}, Bean{name='bean_10108'
}, Bean{name='bean_10109'
}, Bean{name='bean_10110'
}, Bean{name='bean_10111'
}, Bean{name='bean_10112'
}, Bean{name='bean_10113'
}, Bean{name='bean_10114'
}, Bean{name='bean_10115'
}, Bean{name='bean_10116'
}, Bean{name='bean_10117'
}, Bean{name='bean_10118'
}, Bean{name='bean_10119'
}, Bean{name='bean_10120'
}, Bean{name='bean_10121'
}, Bean{name='bean_10122'
}, Bean{name='bean_10123'
}, Bean{name='bean_10124'
}, Bean{name='bean_10125'
}, Bean{name='bean_10126'
}, Bean{name='bean_10127'
}, Bean{name='bean_10128'
}, Bean{name='bean_10129'
}, Bean{name='bean_10130'
}, Bean{name='bean_10131'
}, Bean{name='bean_10132'
}, Bean{name='bean_10133'
}, Bean{name='bean_10134'
}, Bean{name='bean_10135'
}, Bean{name='bean_10136'
}, Bean{name='bean_10137'
}, Bean{name='bean_10138'
}, Bean{name='bean_10139'
}, Bean{name='bean_10140'
}, Bean{name='bean_10141'
}, Bean{name='bean_10142'
}, Bean{name='bean_10143'
}, Bean{name='bean_10144'
}, Bean{name='bean_10145'
}, Bean{name='bean_10146'
}, Bean{name='bean_10147'
}, Bean{name='bean_10148'
}, Bean{name='bean_10149'
}, Bean{name='bean_10150'
}, Bean{name='bean_10151'
}, Bean{name='bean_10152'
}, Bean{name='bean_10153'
}, Bean{name='bean_10154'
}, Bean{name='bean_10155'
}, Bean{name='bean_10156'
}, Bean{name='bean_10157'
}, Bean{name='bean_10158'
}, Bean{name='bean_10159'
}, Bean{name='bean_10160'
}, Bean{name='b2019-01-14 22:19:25.114 4432-4432/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_3542019-01-14 22:19:25.115 4432-4432/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{na複製程式碼

顯然,ArrayList 完勝 LinkedList,因為 LinkedList 的 get、remove 操作都需要從頭開始遍歷,相當於演算法的複雜度變成了 O(n²),所以耗時大大增加:

    Node<
E>
node(int index)
{
if (index <
(size >
>
1)) {
Node<
E>
x = first;
for (int i = 0;
i <
index;
i++) x = x.next;
return x;

} else {
Node<
E>
x = last;
for (int i = size - 1;
i >
index;
i--) x = x.prev;
return x;

}
}複製程式碼

藉助 Map 實現差異比較

演算法簡介

該演算法來自 Lance_小超 《Java 快速進行物件集合資料比對》,這種寫法主要用於集合元素的分類,比如音樂播放器中按歌曲名、歌手名、資料夾名等對所有歌曲進行分類。如果用於實現集合比較的話,還需要引入一個變數 type,以表示元素是新增的、不變的、已更新的還是刪除的。

程式碼實現

/* * Copyright (C) 2018 Yuloran(https://github.com/Yuloran) * * Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */
package com.yuloran.wanandroid_java.ui;
import android.util.ArrayMap;
import com.yuloran.lib_core.utils.Logger;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import androidx.annotation.NonNull;
/** * [集合比較工具] * <
p>
* Author: Yuloran * Date Added: 2019/1/14 19:45 * * @since 1.0.0 */
public final class DiffUtil2{
private static final String TAG = "DiffUtil2";
private DiffUtil2() {

} private static class Bean {
@NonNull String id;
@NonNull String name;
private Bean(@NonNull String id, @NonNull String name) {
this.id = id;
this.name = name;

} @Override public boolean equals(Object o) {
if (this == o) {
return true;

} if (o == null || getClass() != o.getClass()) {
return false;

} Bean bean = (Bean) o;
if (!id.equals(bean.id)) {
return false;

} return name.equals(bean.name);

} @Override public int hashCode() {
int result = id.hashCode();
result = 31 * result + name.hashCode();
return result;

} @Override public String toString() {
return "Bean{" + "name='" + name + '\'' + '
}'
;

}
} private static class Model<
T>
{
private T value;
/** * 1相同 2更新 3新增 4刪除 */ private int type;
private Model(T value, int type) {
this.value = value;
this.type = type;

}
} public static void calculateDiff() {
List<
Bean>
originalList = generateOriginalList();
List<
Bean>
latestList = generateLatestList();
List<
Bean>
added = new ArrayList<
>
();
List<
Bean>
deleted = new ArrayList<
>
();
List<
Bean>
updated = new ArrayList<
>
();
long timestamp = System.currentTimeMillis();
Map<
String, Model<
Bean>
>
map = new ArrayMap<
>
(latestList.size());
for (Bean bean : originalList) {
map.put(bean.id, new Model<
>
(bean, 4));

} for (Bean bean : latestList) {
Model<
Bean>
model = map.get(bean.id);
if (model == null) {
// 新增元素 map.put(bean.id, new Model<
>
(bean, 3));
continue;

} if (bean.equals(model.value)) {
// 保持不變的元素 map.put(bean.id, new Model<
>
(bean, 1));

} else {
// 已更新元素 map.put(bean.id, new Model<
>
(bean, 2));

}
} for (Map.Entry<
String, Model<
Bean>
>
entry : map.entrySet()) {
switch (entry.getValue().type) {
case 1://相同 break;
case 2://更新 updated.add(entry.getValue().value);
break;
case 3://新增 added.add(entry.getValue().value);
break;
case 4://刪除 deleted.add(entry.getValue().value);
break;
default:
}
} Logger.debug(TAG, "calculateDiff cost %dms.", (System.currentTimeMillis() - timestamp));
Logger.debug(TAG, "added: %s", added);
Logger.debug(TAG, "deleted: %s", deleted);
Logger.debug(TAG, "updated: %s", updated);

} private static List<
Bean>
generateOriginalList()
{
List<
Bean>
originalList = new ArrayList<
>
();
for (int i = 0;
i <
10000;
i++) {
originalList.add(new Bean(String.valueOf(i), "bean_" + String.valueOf(i)));

} return originalList;

} private static List<
Bean>
generateLatestList()
{
List<
Bean>
latestList = new ArrayList<
>
();
for (int i = 0;
i <
10500;
i++) {
if (i <
1000) {
if (i % 2 == 0) {
continue;

}
} if (i >
1000 &
&
i <
2000) {
if (i % 3 == 0) {
latestList.add(new Bean(String.valueOf(i), "multiple_of_3_bean_" + String.valueOf(i)));
continue;

}
} latestList.add(new Bean(String.valueOf(i), "bean_" + String.valueOf(i)));

} return latestList;

}
}複製程式碼

效能對比

資料量為 1 萬時(ArrayMap):

2019-01-14 23:26:43.807 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 12ms.2019-01-14 23:26:43.807 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_10000'
}, Bean{name='bean_10001'
}, Bean{name='bean_10002'
}, Bean{name='bean_10003'
}, Bean{name='bean_10004'
}, Bean{name='bean_10005'
}, Bean{name='bean_10006'
}, Bean{name='bean_10007'
}, Bean{name='bean_10008'
}, Bean{name='bean_10009'
}, Bean{name='bean_10010'
}, Bean{name='bean_10011'
}, Bean{name='bean_10012'
}, Bean{name='bean_10013'
}, Bean{name='bean_10014'
}, Bean{name='bean_10015'
}, Bean{name='bean_10016'
}, Bean{name='bean_10017'
}, Bean{name='bean_10018'
}, Bean{name='bean_10019'
}, Bean{name='bean_10020'
}, Bean{name='bean_10021'
}, Bean{name='bean_10022'
}, Bean{name='bean_10023'
}, Bean{name='bean_10024'
}, Bean{name='bean_10025'
}, Bean{name='bean_10026'
}, Bean{name='bean_10027'
}, Bean{name='bean_10028'
}, Bean{name='bean_10029'
}, Bean{name='bean_10030'
}, Bean{name='bean_10031'
}, Bean{name='bean_10032'
}, Bean{name='bean_10033'
}, Bean{name='bean_10034'
}, Bean{name='bean_10035'
}, Bean{name='bean_10036'
}, Bean{name='bean_10037'
}, Bean{name='bean_10038'
}, Bean{name='bean_10039'
}, Bean{name='bean_10040'
}, Bean{name='bean_10041'
}, Bean{name='bean_10042'
}, Bean{name='bean_10043'
}, Bean{name='bean_10044'
}, Bean{name='bean_10045'
}, Bean{name='bean_10046'
}, Bean{name='bean_10047'
}, Bean{name='bean_10048'
}, Bean{name='bean_10049'
}, Bean{name='bean_10050'
}, Bean{name='bean_10051'
}, Bean{name='bean_10052'
}, Bean{name='bean_10053'
}, Bean{name='bean_10054'
}, Bean{name='bean_10055'
}, Bean{name='bean_10056'
}, Bean{name='bean_10057'
}, Bean{name='bean_10058'
}, Bean{name='bean_10059'
}, Bean{name='bean_10060'
}, Bean{name='bean_10061'
}, Bean{name='bean_10062'
}, Bean{name='bean_10063'
}, Bean{name='bean_10064'
}, Bean{name='bean_10065'
}, Bean{name='bean_10066'
}, Bean{name='bean_10067'
}, Bean{name='bean_10068'
}, Bean{name='bean_10069'
}, Bean{name='bean_10070'
}, Bean{name='bean_10071'
}, Bean{name='bean_10072'
}, Bean{name='bean_10073'
}, Bean{name='bean_10074'
}, Bean{name='bean_10075'
}, Bean{name='bean_10076'
}, Bean{name='bean_10077'
}, Bean{name='bean_10078'
}, Bean{name='bean_10079'
}, Bean{name='bean_10080'
}, Bean{name='bean_10081'
}, Bean{name='bean_10082'
}, Bean{name='bean_10083'
}, Bean{name='bean_10084'
}, Bean{name='bean_10085'
}, Bean{name='bean_10086'
}, Bean{name='bean_10087'
}, Bean{name='bean_10088'
}, Bean{name='bean_10089'
}, Bean{name='bean_10090'
}, Bean{name='bean_10091'
}, Bean{name='bean_10092'
}, Bean{name='bean_10093'
}, Bean{name='bean_10094'
}, Bean{name='bean_10095'
}, Bean{name='bean_10096'
}, Bean{name='bean_10097'
}, Bean{name='bean_10098'
}, Bean{name='bean_10099'
}, Bean{name='bean_10100'
}, Bean{name='bean_10101'
}, Bean{name='bean_10102'
}, Bean{name='bean_10103'
}, Bean{name='bean_10104'
}, Bean{name='bean_10105'
}, Bean{name='bean_10106'
}, Bean{name='bean_10107'
}, Bean{name='bean_10108'
}, Bean{name='bean_10109'
}, Bean{name='bean_10110'
}, Bean{name='bean_10111'
}, Bean{name='bean_10112'
}, Bean{name='bean_10113'
}, Bean{name='bean_10114'
}, Bean{name='bean_10115'
}, Bean{name='bean_10116'
}, Bean{name='bean_10117'
}, Bean{name='bean_10118'
}, Bean{name='bean_10119'
}, Bean{name='bean_10120'
}, Bean{name='bean_10121'
}, Bean{name='bean_10122'
}, Bean{name='bean_10123'
}, Bean{name='bean_10124'
}, Bean{name='bean_10125'
}, Bean{name='bean_10126'
}, Bean{name='bean_10127'
}, Bean{name='bean_10128'
}, Bean{name='bean_10129'
}, Bean{name='bean_10130'
}, Bean{name='bean_10131'
}, Bean{name='bean_10132'
}, Bean{name='bean_10133'
}, Bean{name='bean_10134'
}, Bean{name='bean_10135'
}, Bean{name='bean_10136'
}, Bean{name='bean_10137'
}, Bean{name='bean_10138'
}, Bean{name='bean_10139'
}, Bean{name='bean_10140'
}, Bean{name='bean_10141'
}, Bean{name='bean_10142'
}, Bean{name='bean_10143'
}, Bean{name='bean_10144'
}, Bean{name='bean_10145'
}, Bean{name='bean_10146'
}, Bean{name='bean_10147'
}, Bean{name='bean_10148'
}, Bean{name='bean_10149'
}, Bean{name='bean_10150'
}, Bean{name='bean_10151'
}, Bean{name='bean_10152'
}, Bean{name='bean_10153'
}, Bean{name='bean_10154'
}, Bean{name='bean_10155'
}, Bean{name='bean_10156'
}, Bean{name='bean_10157'
}, Bean{name='bean_10158'
}, Bean{name='bean_10159'
}, Bean{name='bean_10160'
}, Bean{name='b2019-01-14 23:26:43.808 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_3542019-01-14 23:26:43.809 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{na2019-01-14 23:26:43.836 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: calculateDiff cost 9ms.2019-01-14 23:26:43.837 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: added: [Bean{name='bean_10000'
}, Bean{name='bean_10001'
}, Bean{name='bean_10002'
}, Bean{name='bean_10003'
}, Bean{name='bean_10004'
}, Bean{name='bean_10005'
}, Bean{name='bean_10006'
}, Bean{name='bean_10007'
}, Bean{name='bean_10008'
}, Bean{name='bean_10009'
}, Bean{name='bean_10010'
}, Bean{name='bean_10011'
}, Bean{name='bean_10012'
}, Bean{name='bean_10013'
}, Bean{name='bean_10014'
}, Bean{name='bean_10015'
}, Bean{name='bean_10016'
}, Bean{name='bean_10017'
}, Bean{name='bean_10018'
}, Bean{name='bean_10019'
}, Bean{name='bean_10020'
}, Bean{name='bean_10021'
}, Bean{name='bean_10022'
}, Bean{name='bean_10023'
}, Bean{name='bean_10024'
}, Bean{name='bean_10025'
}, Bean{name='bean_10026'
}, Bean{name='bean_10027'
}, Bean{name='bean_10028'
}, Bean{name='bean_10029'
}, Bean{name='bean_10030'
}, Bean{name='bean_10031'
}, Bean{name='bean_10032'
}, Bean{name='bean_10033'
}, Bean{name='bean_10034'
}, Bean{name='bean_10035'
}, Bean{name='bean_10036'
}, Bean{name='bean_10037'
}, Bean{name='bean_10038'
}, Bean{name='bean_10039'
}, Bean{name='bean_10040'
}, Bean{name='bean_10041'
}, Bean{name='bean_10042'
}, Bean{name='bean_10043'
}, Bean{name='bean_10044'
}, Bean{name='bean_10045'
}, Bean{name='bean_10046'
}, Bean{name='bean_10047'
}, Bean{name='bean_10048'
}, Bean{name='bean_10049'
}, Bean{name='bean_10050'
}, Bean{name='bean_10051'
}, Bean{name='bean_10052'
}, Bean{name='bean_10053'
}, Bean{name='bean_10054'
}, Bean{name='bean_10055'
}, Bean{name='bean_10056'
}, Bean{name='bean_10057'
}, Bean{name='bean_10058'
}, Bean{name='bean_10059'
}, Bean{name='bean_10060'
}, Bean{name='bean_10061'
}, Bean{name='bean_10062'
}, Bean{name='bean_10063'
}, Bean{name='bean_10064'
}, Bean{name='bean_10065'
}, Bean{name='bean_10066'
}, Bean{name='bean_10067'
}, Bean{name='bean_10068'
}, Bean{name='bean_10069'
}, Bean{name='bean_10070'
}, Bean{name='bean_10071'
}, Bean{name='bean_10072'
}, Bean{name='bean_10073'
}, Bean{name='bean_10074'
}, Bean{name='bean_10075'
}, Bean{name='bean_10076'
}, Bean{name='bean_10077'
}, Bean{name='bean_10078'
}, Bean{name='bean_10079'
}, Bean{name='bean_10080'
}, Bean{name='bean_10081'
}, Bean{name='bean_10082'
}, Bean{name='bean_10083'
}, Bean{name='bean_10084'
}, Bean{name='bean_10085'
}, Bean{name='bean_10086'
}, Bean{name='bean_10087'
}, Bean{name='bean_10088'
}, Bean{name='bean_10089'
}, Bean{name='bean_10090'
}, Bean{name='bean_10091'
}, Bean{name='bean_10092'
}, Bean{name='bean_10093'
}, Bean{name='bean_10094'
}, Bean{name='bean_10095'
}, Bean{name='bean_10096'
}, Bean{name='bean_10097'
}, Bean{name='bean_10098'
}, Bean{name='bean_10099'
}, Bean{name='bean_10100'
}, Bean{name='bean_10101'
}, Bean{name='bean_10102'
}, Bean{name='bean_10103'
}, Bean{name='bean_10104'
}, Bean{name='bean_10105'
}, Bean{name='bean_10106'
}, Bean{name='bean_10107'
}, Bean{name='bean_10108'
}, Bean{name='bean_10109'
}, Bean{name='bean_10110'
}, Bean{name='bean_10111'
}, Bean{name='bean_10112'
}, Bean{name='bean_10113'
}, Bean{name='bean_10114'
}, Bean{name='bean_10115'
}, Bean{name='bean_10116'
}, Bean{name='bean_10117'
}, Bean{name='bean_10118'
}, Bean{name='bean_10119'
}, Bean{name='bean_10120'
}, Bean{name='bean_10121'
}, Bean{name='bean_10122'
}, Bean{name='bean_10123'
}, Bean{name='bean_10124'
}, Bean{name='bean_10125'
}, Bean{name='bean_10126'
}, Bean{name='bean_10127'
}, Bean{name='bean_10128'
}, Bean{name='bean_10129'
}, Bean{name='bean_10130'
}, Bean{name='bean_10131'
}, Bean{name='bean_10132'
}, Bean{name='bean_10133'
}, Bean{name='bean_10134'
}, Bean{name='bean_10135'
}, Bean{name='bean_10136'
}, Bean{name='bean_10137'
}, Bean{name='bean_10138'
}, Bean{name='bean_10139'
}, Bean{name='bean_10140'
}, Bean{name='bean_10141'
}, Bean{name='bean_10142'
}, Bean{name='bean_10143'
}, Bean{name='bean_10144'
}, Bean{name='bean_10145'
}, Bean{name='bean_10146'
}, Bean{name='bean_10147'
}, Bean{name='bean_10148'
}, Bean{name='bean_10149'
}, Bean{name='bean_10150'
}, Bean{name='bean_10151'
}, Bean{name='bean_10152'
}, Bean{name='bean_10153'
}, Bean{name='bean_10154'
}, Bean{name='bean_10155'
}, Bean{name='bean_10156'
}, Bean{name='bean_10157'
}, Bean{name='bean_10158'
}, Bean{name='bean_10159'
}, Bean{name='bean_10160'
}, Bean{name='2019-01-14 23:26:43.837 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_352019-01-14 23:26:43.838 7980-7980/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{n複製程式碼

雖然每次測試所得的具體耗時都不一樣,但基本上要比筆者實現的演算法要快上 3ms。

資料量為 10 萬時(ArrayMap):

2019-01-14 23:33:07.949 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 118ms.2019-01-14 23:33:07.951 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_100000'
}, Bean{name='bean_100001'
}, Bean{name='bean_100002'
}, Bean{name='bean_100003'
}, Bean{name='bean_100004'
}, Bean{name='bean_100005'
}, Bean{name='bean_100006'
}, Bean{name='bean_100007'
}, Bean{name='bean_100008'
}, Bean{name='bean_100009'
}, Bean{name='bean_100010'
}, Bean{name='bean_100011'
}, Bean{name='bean_100012'
}, Bean{name='bean_100013'
}, Bean{name='bean_100014'
}, Bean{name='bean_100015'
}, Bean{name='bean_100016'
}, Bean{name='bean_100017'
}, Bean{name='bean_100018'
}, Bean{name='bean_100019'
}, Bean{name='bean_100020'
}, Bean{name='bean_100021'
}, Bean{name='bean_100022'
}, Bean{name='bean_100023'
}, Bean{name='bean_100024'
}, Bean{name='bean_100025'
}, Bean{name='bean_100026'
}, Bean{name='bean_100027'
}, Bean{name='bean_100028'
}, Bean{name='bean_100029'
}, Bean{name='bean_100030'
}, Bean{name='bean_100031'
}, Bean{name='bean_100032'
}, Bean{name='bean_100033'
}, Bean{name='bean_100034'
}, Bean{name='bean_100035'
}, Bean{name='bean_100036'
}, Bean{name='bean_100037'
}, Bean{name='bean_100038'
}, Bean{name='bean_100039'
}, Bean{name='bean_100040'
}, Bean{name='bean_100041'
}, Bean{name='bean_100042'
}, Bean{name='bean_100043'
}, Bean{name='bean_100044'
}, Bean{name='bean_100045'
}, Bean{name='bean_100046'
}, Bean{name='bean_100047'
}, Bean{name='bean_100048'
}, Bean{name='bean_100049'
}, Bean{name='bean_100050'
}, Bean{name='bean_100051'
}, Bean{name='bean_100052'
}, Bean{name='bean_100053'
}, Bean{name='bean_100054'
}, Bean{name='bean_100055'
}, Bean{name='bean_100056'
}, Bean{name='bean_100057'
}, Bean{name='bean_100058'
}, Bean{name='bean_100059'
}, Bean{name='bean_100060'
}, Bean{name='bean_100061'
}, Bean{name='bean_100062'
}, Bean{name='bean_100063'
}, Bean{name='bean_100064'
}, Bean{name='bean_100065'
}, Bean{name='bean_100066'
}, Bean{name='bean_100067'
}, Bean{name='bean_100068'
}, Bean{name='bean_100069'
}, Bean{name='bean_100070'
}, Bean{name='bean_100071'
}, Bean{name='bean_100072'
}, Bean{name='bean_100073'
}, Bean{name='bean_100074'
}, Bean{name='bean_100075'
}, Bean{name='bean_100076'
}, Bean{name='bean_100077'
}, Bean{name='bean_100078'
}, Bean{name='bean_100079'
}, Bean{name='bean_100080'
}, Bean{name='bean_100081'
}, Bean{name='bean_100082'
}, Bean{name='bean_100083'
}, Bean{name='bean_100084'
}, Bean{name='bean_100085'
}, Bean{name='bean_100086'
}, Bean{name='bean_100087'
}, Bean{name='bean_100088'
}, Bean{name='bean_100089'
}, Bean{name='bean_100090'
}, Bean{name='bean_100091'
}, Bean{name='bean_100092'
}, Bean{name='bean_100093'
}, Bean{name='bean_100094'
}, Bean{name='bean_100095'
}, Bean{name='bean_100096'
}, Bean{name='bean_100097'
}, Bean{name='bean_100098'
}, Bean{name='bean_100099'
}, Bean{name='bean_100100'
}, Bean{name='bean_100101'
}, Bean{name='bean_100102'
}, Bean{name='bean_100103'
}, Bean{name='bean_100104'
}, Bean{name='bean_100105'
}, Bean{name='bean_100106'
}, Bean{name='bean_100107'
}, Bean{name='bean_100108'
}, Bean{name='bean_100109'
}, Bean{name='bean_100110'
}, Bean{name='bean_100111'
}, Bean{name='bean_100112'
}, Bean{name='bean_100113'
}, Bean{name='bean_100114'
}, Bean{name='bean_100115'
}, Bean{name='bean_100116'
}, Bean{name='bean_100117'
}, Bean{name='bean_100118'
}, Bean{name='bean_100119'
}, Bean{name='bean_100120'
}, Bean{name='bean_100121'
}, Bean{name='bean_100122'
}, Bean{name='bean_100123'
}, Bean{name='bean_100124'
}, Bean{name='bean_100125'
}, Bean{name='bean_100126'
}, Bean{name='bean_100127'
}, Bean{name='bean_100128'
}, Bean{name='bean_100129'
}, Bean{name='bean_100130'
}, Bean{name='bean_100131'
}, Bean{name='bean_100132'
}, Bean{name='bean_100133'
}, Bean{name='bean_100134'
}, Bean{name='bean_100135'
}, Bean{name='bean_100136'
}, Bean{name='bean_100137'
}, Bean{name='bean_100138'
}, Bean{name='bean_100139'
}, Bean{name='bean_100140'
}, Bean{name='bean_100141'
}, Bean{name='bean_100142'
}, Bean{name='bean_100143'
}, Bean{name='bean_100144'
}, Bean{name='bean_100145'
}, Bean{name='bean_100146'
}, Bean{name='bean_100147'
}, Bean{name='bean_100148'
}, Bean{name='bean_100149'
}, Bean{name='bean_100150'
}, Bean{name='bean_100151'
}, Bean{name='bean_100152'
}, Bean{name='bean_100153'
}, Bean{name='bean_100154'
}, Bean{na2019-01-14 23:33:07.951 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='bean_2'
}, Bean{name='bean_4'
}, Bean{name='bean_6'
}, Bean{name='bean_8'
}, Bean{name='bean_10'
}, Bean{name='bean_12'
}, Bean{name='bean_14'
}, Bean{name='bean_16'
}, Bean{name='bean_18'
}, Bean{name='bean_20'
}, Bean{name='bean_22'
}, Bean{name='bean_24'
}, Bean{name='bean_26'
}, Bean{name='bean_28'
}, Bean{name='bean_30'
}, Bean{name='bean_32'
}, Bean{name='bean_34'
}, Bean{name='bean_36'
}, Bean{name='bean_38'
}, Bean{name='bean_40'
}, Bean{name='bean_42'
}, Bean{name='bean_44'
}, Bean{name='bean_46'
}, Bean{name='bean_48'
}, Bean{name='bean_50'
}, Bean{name='bean_52'
}, Bean{name='bean_54'
}, Bean{name='bean_56'
}, Bean{name='bean_58'
}, Bean{name='bean_60'
}, Bean{name='bean_62'
}, Bean{name='bean_64'
}, Bean{name='bean_66'
}, Bean{name='bean_68'
}, Bean{name='bean_70'
}, Bean{name='bean_72'
}, Bean{name='bean_74'
}, Bean{name='bean_76'
}, Bean{name='bean_78'
}, Bean{name='bean_80'
}, Bean{name='bean_82'
}, Bean{name='bean_84'
}, Bean{name='bean_86'
}, Bean{name='bean_88'
}, Bean{name='bean_90'
}, Bean{name='bean_92'
}, Bean{name='bean_94'
}, Bean{name='bean_96'
}, Bean{name='bean_98'
}, Bean{name='bean_100'
}, Bean{name='bean_102'
}, Bean{name='bean_104'
}, Bean{name='bean_106'
}, Bean{name='bean_108'
}, Bean{name='bean_110'
}, Bean{name='bean_112'
}, Bean{name='bean_114'
}, Bean{name='bean_116'
}, Bean{name='bean_118'
}, Bean{name='bean_120'
}, Bean{name='bean_122'
}, Bean{name='bean_124'
}, Bean{name='bean_126'
}, Bean{name='bean_128'
}, Bean{name='bean_130'
}, Bean{name='bean_132'
}, Bean{name='bean_134'
}, Bean{name='bean_136'
}, Bean{name='bean_138'
}, Bean{name='bean_140'
}, Bean{name='bean_142'
}, Bean{name='bean_144'
}, Bean{name='bean_146'
}, Bean{name='bean_148'
}, Bean{name='bean_150'
}, Bean{name='bean_152'
}, Bean{name='bean_154'
}, Bean{name='bean_156'
}, Bean{name='bean_158'
}, Bean{name='bean_160'
}, Bean{name='bean_162'
}, Bean{name='bean_164'
}, Bean{name='bean_166'
}, Bean{name='bean_168'
}, Bean{name='bean_170'
}, Bean{name='bean_172'
}, Bean{name='bean_174'
}, Bean{name='bean_176'
}, Bean{name='bean_178'
}, Bean{name='bean_180'
}, Bean{name='bean_182'
}, Bean{name='bean_184'
}, Bean{name='bean_186'
}, Bean{name='bean_188'
}, Bean{name='bean_190'
}, Bean{name='bean_192'
}, Bean{name='bean_194'
}, Bean{name='bean_196'
}, Bean{name='bean_198'
}, Bean{name='bean_200'
}, Bean{name='bean_202'
}, Bean{name='bean_204'
}, Bean{name='bean_206'
}, Bean{name='bean_208'
}, Bean{name='bean_210'
}, Bean{name='bean_212'
}, Bean{name='bean_214'
}, Bean{name='bean_216'
}, Bean{name='bean_218'
}, Bean{name='bean_220'
}, Bean{name='bean_222'
}, Bean{name='bean_224'
}, Bean{name='bean_226'
}, Bean{name='bean_228'
}, Bean{name='bean_230'
}, Bean{name='bean_232'
}, Bean{name='bean_234'
}, Bean{name='bean_236'
}, Bean{name='bean_238'
}, Bean{name='bean_240'
}, Bean{name='bean_242'
}, Bean{name='bean_244'
}, Bean{name='bean_246'
}, Bean{name='bean_248'
}, Bean{name='bean_250'
}, Bean{name='bean_252'
}, Bean{name='bean_254'
}, Bean{name='bean_256'
}, Bean{name='bean_258'
}, Bean{name='bean_260'
}, Bean{name='bean_262'
}, Bean{name='bean_264'
}, Bean{name='bean_266'
}, Bean{name='bean_268'
}, Bean{name='bean_270'
}, Bean{name='bean_272'
}, Bean{name='bean_274'
}, Bean{name='bean_276'
}, Bean{name='bean_278'
}, Bean{name='bean_280'
}, Bean{name='bean_282'
}, Bean{name='bean_284'
}, Bean{name='bean_286'
}, Bean{name='bean_288'
}, Bean{name='bean_290'
}, Bean{name='bean_292'
}, Bean{name='bean_294'
}, Bean{name='bean_296'
}, Bean{name='bean_298'
}, Bean{name='bean_300'
}, Bean{name='bean_302'
}, Bean{name='bean_304'
}, Bean{name='bean_306'
}, Bean{name='bean_308'
}, Bean{name='bean_310'
}, Bean{name='bean_312'
}, Bean{name='bean_314'
}, Bean{name='bean_316'
}, Bean{name='bean_318'
}, Bean{name='bean_320'
}, Bean{name='bean_322'
}, Bean{name='bean_324'
}, Bean{name='bean_326'
}, Bean{name='bean_328'
}, Bean{name='bean_330'
}, Bean{name='bean_332'
}, Bean{name='bean_334'
}, Bean{name='bean_336'
}, Bean{name='bean_338'
}, Bean{name='bean_340'
}, Bean{name='bean_342'
}, Bean{name='bean_344'
}, Bean{name='bean_346'
}, Bean{name='bean_348'
}, Bean{name='bean_350'
}, Bean{name='bean_352'
}, Bean{name='bean_3542019-01-14 23:33:07.952 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='
multiple_of_3_bean_1005'
}, Bean{name='
multiple_of_3_bean_1008'
}, Bean{name='
multiple_of_3_bean_1011'
}, Bean{name='
multiple_of_3_bean_1014'
}, Bean{name='
multiple_of_3_bean_1017'
}, Bean{name='
multiple_of_3_bean_1020'
}, Bean{name='
multiple_of_3_bean_1023'
}, Bean{name='
multiple_of_3_bean_1026'
}, Bean{name='
multiple_of_3_bean_1029'
}, Bean{name='
multiple_of_3_bean_1032'
}, Bean{name='
multiple_of_3_bean_1035'
}, Bean{name='
multiple_of_3_bean_1038'
}, Bean{name='
multiple_of_3_bean_1041'
}, Bean{name='
multiple_of_3_bean_1044'
}, Bean{name='
multiple_of_3_bean_1047'
}, Bean{name='
multiple_of_3_bean_1050'
}, Bean{name='
multiple_of_3_bean_1053'
}, Bean{name='
multiple_of_3_bean_1056'
}, Bean{name='
multiple_of_3_bean_1059'
}, Bean{name='
multiple_of_3_bean_1062'
}, Bean{name='
multiple_of_3_bean_1065'
}, Bean{name='
multiple_of_3_bean_1068'
}, Bean{name='
multiple_of_3_bean_1071'
}, Bean{name='
multiple_of_3_bean_1074'
}, Bean{name='
multiple_of_3_bean_1077'
}, Bean{name='
multiple_of_3_bean_1080'
}, Bean{name='
multiple_of_3_bean_1083'
}, Bean{name='
multiple_of_3_bean_1086'
}, Bean{name='
multiple_of_3_bean_1089'
}, Bean{name='
multiple_of_3_bean_1092'
}, Bean{name='
multiple_of_3_bean_1095'
}, Bean{name='
multiple_of_3_bean_1098'
}, Bean{name='
multiple_of_3_bean_1101'
}, Bean{name='
multiple_of_3_bean_1104'
}, Bean{name='
multiple_of_3_bean_1107'
}, Bean{name='
multiple_of_3_bean_1110'
}, Bean{name='
multiple_of_3_bean_1113'
}, Bean{name='
multiple_of_3_bean_1116'
}, Bean{name='
multiple_of_3_bean_1119'
}, Bean{name='
multiple_of_3_bean_1122'
}, Bean{name='
multiple_of_3_bean_1125'
}, Bean{name='
multiple_of_3_bean_1128'
}, Bean{name='
multiple_of_3_bean_1131'
}, Bean{name='
multiple_of_3_bean_1134'
}, Bean{name='
multiple_of_3_bean_1137'
}, Bean{name='
multiple_of_3_bean_1140'
}, Bean{name='
multiple_of_3_bean_1143'
}, Bean{name='
multiple_of_3_bean_1146'
}, Bean{name='
multiple_of_3_bean_1149'
}, Bean{name='
multiple_of_3_bean_1152'
}, Bean{name='
multiple_of_3_bean_1155'
}, Bean{name='
multiple_of_3_bean_1158'
}, Bean{name='
multiple_of_3_bean_1161'
}, Bean{name='
multiple_of_3_bean_1164'
}, Bean{name='
multiple_of_3_bean_1167'
}, Bean{name='
multiple_of_3_bean_1170'
}, Bean{name='
multiple_of_3_bean_1173'
}, Bean{name='
multiple_of_3_bean_1176'
}, Bean{name='
multiple_of_3_bean_1179'
}, Bean{name='
multiple_of_3_bean_1182'
}, Bean{name='
multiple_of_3_bean_1185'
}, Bean{name='
multiple_of_3_bean_1188'
}, Bean{name='
multiple_of_3_bean_1191'
}, Bean{name='
multiple_of_3_bean_1194'
}, Bean{name='
multiple_of_3_bean_1197'
}, Bean{name='
multiple_of_3_bean_1200'
}, Bean{name='
multiple_of_3_bean_1203'
}, Bean{name='
multiple_of_3_bean_1206'
}, Bean{name='
multiple_of_3_bean_1209'
}, Bean{name='
multiple_of_3_bean_1212'
}, Bean{name='
multiple_of_3_bean_1215'
}, Bean{name='
multiple_of_3_bean_1218'
}, Bean{name='
multiple_of_3_bean_1221'
}, Bean{name='
multiple_of_3_bean_1224'
}, Bean{name='
multiple_of_3_bean_1227'
}, Bean{name='
multiple_of_3_bean_1230'
}, Bean{name='
multiple_of_3_bean_1233'
}, Bean{name='
multiple_of_3_bean_1236'
}, Bean{name='
multiple_of_3_bean_1239'
}, Bean{name='
multiple_of_3_bean_1242'
}, Bean{name='
multiple_of_3_bean_1245'
}, Bean{name='
multiple_of_3_bean_1248'
}, Bean{name='
multiple_of_3_bean_1251'
}, Bean{name='
multiple_of_3_bean_1254'
}, Bean{name='
multiple_of_3_bean_1257'
}, Bean{name='
multiple_of_3_bean_1260'
}, Bean{name='
multiple_of_3_bean_1263'
}, Bean{name='
multiple_of_3_bean_1266'
}, Bean{name='
multiple_of_3_bean_1269'
}, Bean{name='
multiple_of_3_bean_1272'
}, Bean{name='
multiple_of_3_bean_1275'
}, Bean{name='
multiple_of_3_bean_1278'
}, Bean{name='
multiple_of_3_bean_1281'
}, Bean{name='
multiple_of_3_bean_1284'
}, Bean{name='
multiple_of_3_bean_1287'
}, Bean{name='
multiple_of_3_bean_1290'
}, Bean{name='
multiple_of_3_bean_1293'
}, Bean{name='
multiple_of_3_bean_1296'
}, Bean{name='
multiple_of_3_bean_1299'
}, Bean{name='
multiple_of_3_bean_1302'
}, Bean{name='
multiple_of_3_bean_1305'
}, Bean{name='
multiple_of_3_bean_1308'
}, Bean{name='
multiple_of_3_bean_1311'
}, Bean{name='
multiple_of_3_bean_1314'
}, Bean{name='
multiple_of_3_bean_1317'
}, Bean{na2019-01-14 23:33:08.456 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: calculateDiff cost 86ms.2019-01-14 23:33:08.457 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: added: [Bean{name='
bean_100000'
}, Bean{name='
bean_100001'
}, Bean{name='
bean_100002'
}, Bean{name='
bean_100003'
}, Bean{name='
bean_100004'
}, Bean{name='
bean_100005'
}, Bean{name='
bean_100006'
}, Bean{name='
bean_100007'
}, Bean{name='
bean_100008'
}, Bean{name='
bean_100009'
}, Bean{name='
bean_100010'
}, Bean{name='
bean_100011'
}, Bean{name='
bean_100012'
}, Bean{name='
bean_100013'
}, Bean{name='
bean_100014'
}, Bean{name='
bean_100015'
}, Bean{name='
bean_100016'
}, Bean{name='
bean_100017'
}, Bean{name='
bean_100018'
}, Bean{name='
bean_100019'
}, Bean{name='
bean_100020'
}, Bean{name='
bean_100021'
}, Bean{name='
bean_100022'
}, Bean{name='
bean_100023'
}, Bean{name='
bean_100024'
}, Bean{name='
bean_100025'
}, Bean{name='
bean_100026'
}, Bean{name='
bean_100027'
}, Bean{name='
bean_100028'
}, Bean{name='
bean_100029'
}, Bean{name='
bean_100030'
}, Bean{name='
bean_100031'
}, Bean{name='
bean_100032'
}, Bean{name='
bean_100033'
}, Bean{name='
bean_100034'
}, Bean{name='
bean_100035'
}, Bean{name='
bean_100036'
}, Bean{name='
bean_100037'
}, Bean{name='
bean_100038'
}, Bean{name='
bean_100039'
}, Bean{name='
bean_100040'
}, Bean{name='
bean_100041'
}, Bean{name='
bean_100042'
}, Bean{name='
bean_100043'
}, Bean{name='
bean_100044'
}, Bean{name='
bean_100045'
}, Bean{name='
bean_100046'
}, Bean{name='
bean_100047'
}, Bean{name='
bean_100048'
}, Bean{name='
bean_100049'
}, Bean{name='
bean_100050'
}, Bean{name='
bean_100051'
}, Bean{name='
bean_100052'
}, Bean{name='
bean_100053'
}, Bean{name='
bean_100054'
}, Bean{name='
bean_100055'
}, Bean{name='
bean_100056'
}, Bean{name='
bean_100057'
}, Bean{name='
bean_100058'
}, Bean{name='
bean_100059'
}, Bean{name='
bean_100060'
}, Bean{name='
bean_100061'
}, Bean{name='
bean_100062'
}, Bean{name='
bean_100063'
}, Bean{name='
bean_100064'
}, Bean{name='
bean_100065'
}, Bean{name='
bean_100066'
}, Bean{name='
bean_100067'
}, Bean{name='
bean_100068'
}, Bean{name='
bean_100069'
}, Bean{name='
bean_100070'
}, Bean{name='
bean_100071'
}, Bean{name='
bean_100072'
}, Bean{name='
bean_100073'
}, Bean{name='
bean_100074'
}, Bean{name='
bean_100075'
}, Bean{name='
bean_100076'
}, Bean{name='
bean_100077'
}, Bean{name='
bean_100078'
}, Bean{name='
bean_100079'
}, Bean{name='
bean_100080'
}, Bean{name='
bean_100081'
}, Bean{name='
bean_100082'
}, Bean{name='
bean_100083'
}, Bean{name='
bean_100084'
}, Bean{name='
bean_100085'
}, Bean{name='
bean_100086'
}, Bean{name='
bean_100087'
}, Bean{name='
bean_100088'
}, Bean{name='
bean_100089'
}, Bean{name='
bean_100090'
}, Bean{name='
bean_100091'
}, Bean{name='
bean_100092'
}, Bean{name='
bean_100093'
}, Bean{name='
bean_100094'
}, Bean{name='
bean_100095'
}, Bean{name='
bean_100096'
}, Bean{name='
bean_100097'
}, Bean{name='
bean_100098'
}, Bean{name='
bean_100099'
}, Bean{name='
bean_100100'
}, Bean{name='
bean_100101'
}, Bean{name='
bean_100102'
}, Bean{name='
bean_100103'
}, Bean{name='
bean_100104'
}, Bean{name='
bean_100105'
}, Bean{name='
bean_100106'
}, Bean{name='
bean_100107'
}, Bean{name='
bean_100108'
}, Bean{name='
bean_100109'
}, Bean{name='
bean_100110'
}, Bean{name='
bean_100111'
}, Bean{name='
bean_100112'
}, Bean{name='
bean_100113'
}, Bean{name='
bean_100114'
}, Bean{name='
bean_100115'
}, Bean{name='
bean_100116'
}, Bean{name='
bean_100117'
}, Bean{name='
bean_100118'
}, Bean{name='
bean_100119'
}, Bean{name='
bean_100120'
}, Bean{name='
bean_100121'
}, Bean{name='
bean_100122'
}, Bean{name='
bean_100123'
}, Bean{name='
bean_100124'
}, Bean{name='
bean_100125'
}, Bean{name='
bean_100126'
}, Bean{name='
bean_100127'
}, Bean{name='
bean_100128'
}, Bean{name='
bean_100129'
}, Bean{name='
bean_100130'
}, Bean{name='
bean_100131'
}, Bean{name='
bean_100132'
}, Bean{name='
bean_100133'
}, Bean{name='
bean_100134'
}, Bean{name='
bean_100135'
}, Bean{name='
bean_100136'
}, Bean{name='
bean_100137'
}, Bean{name='
bean_100138'
}, Bean{name='
bean_100139'
}, Bean{name='
bean_100140'
}, Bean{name='
bean_100141'
}, Bean{name='
bean_100142'
}, Bean{name='
bean_100143'
}, Bean{name='
bean_100144'
}, Bean{name='
bean_100145'
}, Bean{name='
bean_100146'
}, Bean{name='
bean_100147'
}, Bean{name='
bean_100148'
}, Bean{name='
bean_100149'
}, Bean{name='
bean_100150'
}, Bean{name='
bean_100151'
}, Bean{name='
bean_100152'
}, Bean{name='
bean_100153'
}, Bean{name='
bean_100154'
}, Bean{n2019-01-14 23:33:08.458 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: deleted: [Bean{name='
bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_352019-01-14 23:33:08.458 9015-9015/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{n複製程式碼

這個時候,差異就比較明顯了,筆者實現的演算法直接慢了 32ms!所以,雖然 System.arraycopy() 的效率很高,但是也扛不住資料量大啊…而使用 ArrayMap 雖然多了幾次迴圈,不過都是平級別的,不影響演算法複雜度,不過 put 的時候因為要根據 hash 遍歷查詢 index,所以還是有一定的損耗。

資料量為 1 萬時(HashMap):

2019-01-14 23:53:05.509 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 13ms.2019-01-14 23:53:05.510 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_10000'
}, Bean{name='bean_10001'
}, Bean{name='bean_10002'
}, Bean{name='bean_10003'
}, Bean{name='bean_10004'
}, Bean{name='bean_10005'
}, Bean{name='bean_10006'
}, Bean{name='bean_10007'
}, Bean{name='bean_10008'
}, Bean{name='bean_10009'
}, Bean{name='bean_10010'
}, Bean{name='bean_10011'
}, Bean{name='bean_10012'
}, Bean{name='bean_10013'
}, Bean{name='bean_10014'
}, Bean{name='bean_10015'
}, Bean{name='bean_10016'
}, Bean{name='bean_10017'
}, Bean{name='bean_10018'
}, Bean{name='bean_10019'
}, Bean{name='bean_10020'
}, Bean{name='bean_10021'
}, Bean{name='bean_10022'
}, Bean{name='bean_10023'
}, Bean{name='bean_10024'
}, Bean{name='bean_10025'
}, Bean{name='bean_10026'
}, Bean{name='bean_10027'
}, Bean{name='bean_10028'
}, Bean{name='bean_10029'
}, Bean{name='bean_10030'
}, Bean{name='bean_10031'
}, Bean{name='bean_10032'
}, Bean{name='bean_10033'
}, Bean{name='bean_10034'
}, Bean{name='bean_10035'
}, Bean{name='bean_10036'
}, Bean{name='bean_10037'
}, Bean{name='bean_10038'
}, Bean{name='bean_10039'
}, Bean{name='bean_10040'
}, Bean{name='bean_10041'
}, Bean{name='bean_10042'
}, Bean{name='bean_10043'
}, Bean{name='bean_10044'
}, Bean{name='bean_10045'
}, Bean{name='bean_10046'
}, Bean{name='bean_10047'
}, Bean{name='bean_10048'
}, Bean{name='bean_10049'
}, Bean{name='bean_10050'
}, Bean{name='bean_10051'
}, Bean{name='bean_10052'
}, Bean{name='bean_10053'
}, Bean{name='bean_10054'
}, Bean{name='bean_10055'
}, Bean{name='bean_10056'
}, Bean{name='bean_10057'
}, Bean{name='bean_10058'
}, Bean{name='bean_10059'
}, Bean{name='bean_10060'
}, Bean{name='bean_10061'
}, Bean{name='bean_10062'
}, Bean{name='bean_10063'
}, Bean{name='bean_10064'
}, Bean{name='bean_10065'
}, Bean{name='bean_10066'
}, Bean{name='bean_10067'
}, Bean{name='bean_10068'
}, Bean{name='bean_10069'
}, Bean{name='bean_10070'
}, Bean{name='bean_10071'
}, Bean{name='bean_10072'
}, Bean{name='bean_10073'
}, Bean{name='bean_10074'
}, Bean{name='bean_10075'
}, Bean{name='bean_10076'
}, Bean{name='bean_10077'
}, Bean{name='bean_10078'
}, Bean{name='bean_10079'
}, Bean{name='bean_10080'
}, Bean{name='bean_10081'
}, Bean{name='bean_10082'
}, Bean{name='bean_10083'
}, Bean{name='bean_10084'
}, Bean{name='bean_10085'
}, Bean{name='bean_10086'
}, Bean{name='bean_10087'
}, Bean{name='bean_10088'
}, Bean{name='bean_10089'
}, Bean{name='bean_10090'
}, Bean{name='bean_10091'
}, Bean{name='bean_10092'
}, Bean{name='bean_10093'
}, Bean{name='bean_10094'
}, Bean{name='bean_10095'
}, Bean{name='bean_10096'
}, Bean{name='bean_10097'
}, Bean{name='bean_10098'
}, Bean{name='bean_10099'
}, Bean{name='bean_10100'
}, Bean{name='bean_10101'
}, Bean{name='bean_10102'
}, Bean{name='bean_10103'
}, Bean{name='bean_10104'
}, Bean{name='bean_10105'
}, Bean{name='bean_10106'
}, Bean{name='bean_10107'
}, Bean{name='bean_10108'
}, Bean{name='bean_10109'
}, Bean{name='bean_10110'
}, Bean{name='bean_10111'
}, Bean{name='bean_10112'
}, Bean{name='bean_10113'
}, Bean{name='bean_10114'
}, Bean{name='bean_10115'
}, Bean{name='bean_10116'
}, Bean{name='bean_10117'
}, Bean{name='bean_10118'
}, Bean{name='bean_10119'
}, Bean{name='bean_10120'
}, Bean{name='bean_10121'
}, Bean{name='bean_10122'
}, Bean{name='bean_10123'
}, Bean{name='bean_10124'
}, Bean{name='bean_10125'
}, Bean{name='bean_10126'
}, Bean{name='bean_10127'
}, Bean{name='bean_10128'
}, Bean{name='bean_10129'
}, Bean{name='bean_10130'
}, Bean{name='bean_10131'
}, Bean{name='bean_10132'
}, Bean{name='bean_10133'
}, Bean{name='bean_10134'
}, Bean{name='bean_10135'
}, Bean{name='bean_10136'
}, Bean{name='bean_10137'
}, Bean{name='bean_10138'
}, Bean{name='bean_10139'
}, Bean{name='bean_10140'
}, Bean{name='bean_10141'
}, Bean{name='bean_10142'
}, Bean{name='bean_10143'
}, Bean{name='bean_10144'
}, Bean{name='bean_10145'
}, Bean{name='bean_10146'
}, Bean{name='bean_10147'
}, Bean{name='bean_10148'
}, Bean{name='bean_10149'
}, Bean{name='bean_10150'
}, Bean{name='bean_10151'
}, Bean{name='bean_10152'
}, Bean{name='bean_10153'
}, Bean{name='bean_10154'
}, Bean{name='bean_10155'
}, Bean{name='bean_10156'
}, Bean{name='bean_10157'
}, Bean{name='bean_10158'
}, Bean{name='bean_10159'
}, Bean{name='bean_10160'
}, Bean{name='b2019-01-14 23:53:05.511 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_3542019-01-14 23:53:05.512 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{na2019-01-14 23:53:05.540 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: calculateDiff cost 10ms.2019-01-14 23:53:05.541 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: added: [Bean{name='bean_10019'
}, Bean{name='bean_10018'
}, Bean{name='bean_10011'
}, Bean{name='bean_10010'
}, Bean{name='bean_10013'
}, Bean{name='bean_10012'
}, Bean{name='bean_10015'
}, Bean{name='bean_10014'
}, Bean{name='bean_10017'
}, Bean{name='bean_10016'
}, Bean{name='bean_10020'
}, Bean{name='bean_10029'
}, Bean{name='bean_10022'
}, Bean{name='bean_10021'
}, Bean{name='bean_10024'
}, Bean{name='bean_10023'
}, Bean{name='bean_10026'
}, Bean{name='bean_10025'
}, Bean{name='bean_10028'
}, Bean{name='bean_10027'
}, Bean{name='bean_10008'
}, Bean{name='bean_10007'
}, Bean{name='bean_10009'
}, Bean{name='bean_10000'
}, Bean{name='bean_10002'
}, Bean{name='bean_10001'
}, Bean{name='bean_10004'
}, Bean{name='bean_10003'
}, Bean{name='bean_10006'
}, Bean{name='bean_10005'
}, Bean{name='bean_10130'
}, Bean{name='bean_10139'
}, Bean{name='bean_10132'
}, Bean{name='bean_10131'
}, Bean{name='bean_10134'
}, Bean{name='bean_10133'
}, Bean{name='bean_10136'
}, Bean{name='bean_10135'
}, Bean{name='bean_10138'
}, Bean{name='bean_10137'
}, Bean{name='bean_10141'
}, Bean{name='bean_10140'
}, Bean{name='bean_10143'
}, Bean{name='bean_10142'
}, Bean{name='bean_10145'
}, Bean{name='bean_10144'
}, Bean{name='bean_10147'
}, Bean{name='bean_10146'
}, Bean{name='bean_10149'
}, Bean{name='bean_10148'
}, Bean{name='bean_10118'
}, Bean{name='bean_10117'
}, Bean{name='bean_10119'
}, Bean{name='bean_10110'
}, Bean{name='bean_10112'
}, Bean{name='bean_10111'
}, Bean{name='bean_10114'
}, Bean{name='bean_10113'
}, Bean{name='bean_10116'
}, Bean{name='bean_10115'
}, Bean{name='bean_10129'
}, Bean{name='bean_10128'
}, Bean{name='bean_10121'
}, Bean{name='bean_10120'
}, Bean{name='bean_10123'
}, Bean{name='bean_10122'
}, Bean{name='bean_10125'
}, Bean{name='bean_10124'
}, Bean{name='bean_10127'
}, Bean{name='bean_10126'
}, Bean{name='bean_10107'
}, Bean{name='bean_10106'
}, Bean{name='bean_10109'
}, Bean{name='bean_10108'
}, Bean{name='bean_10101'
}, Bean{name='bean_10100'
}, Bean{name='bean_10103'
}, Bean{name='bean_10102'
}, Bean{name='bean_10105'
}, Bean{name='bean_10104'
}, Bean{name='bean_10091'
}, Bean{name='bean_10090'
}, Bean{name='bean_10093'
}, Bean{name='bean_10092'
}, Bean{name='bean_10095'
}, Bean{name='bean_10094'
}, Bean{name='bean_10097'
}, Bean{name='bean_10096'
}, Bean{name='bean_10099'
}, Bean{name='bean_10098'
}, Bean{name='bean_10071'
}, Bean{name='bean_10070'
}, Bean{name='bean_10073'
}, Bean{name='bean_10072'
}, Bean{name='bean_10075'
}, Bean{name='bean_10074'
}, Bean{name='bean_10077'
}, Bean{name='bean_10076'
}, Bean{name='bean_10079'
}, Bean{name='bean_10078'
}, Bean{name='bean_10080'
}, Bean{name='bean_10082'
}, Bean{name='bean_10081'
}, Bean{name='bean_10084'
}, Bean{name='bean_10083'
}, Bean{name='bean_10086'
}, Bean{name='bean_10085'
}, Bean{name='bean_10088'
}, Bean{name='bean_10087'
}, Bean{name='bean_10089'
}, Bean{name='bean_10051'
}, Bean{name='bean_10050'
}, Bean{name='bean_10053'
}, Bean{name='bean_10052'
}, Bean{name='bean_10055'
}, Bean{name='bean_10054'
}, Bean{name='bean_10057'
}, Bean{name='bean_10056'
}, Bean{name='bean_10059'
}, Bean{name='bean_10058'
}, Bean{name='bean_10060'
}, Bean{name='bean_10062'
}, Bean{name='bean_10061'
}, Bean{name='bean_10064'
}, Bean{name='bean_10063'
}, Bean{name='bean_10066'
}, Bean{name='bean_10065'
}, Bean{name='bean_10068'
}, Bean{name='bean_10067'
}, Bean{name='bean_10069'
}, Bean{name='bean_10031'
}, Bean{name='bean_10030'
}, Bean{name='bean_10033'
}, Bean{name='bean_10032'
}, Bean{name='bean_10035'
}, Bean{name='bean_10034'
}, Bean{name='bean_10037'
}, Bean{name='bean_10036'
}, Bean{name='bean_10039'
}, Bean{name='bean_10038'
}, Bean{name='bean_10040'
}, Bean{name='bean_10042'
}, Bean{name='bean_10041'
}, Bean{name='bean_10044'
}, Bean{name='bean_10043'
}, Bean{name='bean_10046'
}, Bean{name='bean_10045'
}, Bean{name='bean_10048'
}, Bean{name='bean_10047'
}, Bean{name='bean_10049'
}, Bean{name='bean_10251'
}, Bean{name='bean_10250'
}, Bean{name='bean_10253'
}, Bean{name='bean_10252'
}, Bean{name='bean_10255'
}, Bean{name='bean_10254'
}, Bean{name='bean_10257'
}, Bean{name='bean_10256'
}, Bean{name='bean_10259'
}, Bean{name='bean_10258'
}, Bean{name='bean_10260'
}, Bean{name='2019-01-14 23:53:05.541 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: deleted: [Bean{name='bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_354'
}, Bean{name='
bean_356'
}, Bean{name='
bean_358'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_360'
}, Bean{name='
bean_362'
}, Bean{name='
bean_364'
}, Bean{name='
bean_366'
}, Bean{name='
bean_368'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_370'
}, Bean{name='
bean_372'
}, Bean{name='
bean_374'
}, Bean{name='
bean_376'
}, Bean{name='
bean_378'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_380'
}, Bean{name='
bean_382'
}, Bean{name='
bean_384'
}, Bean{name='
bean_386'
}, Bean{name='
bean_388'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_390'
}, Bean{name='
bean_392'
}, Bean{name='
bean_394'
}, Bean{name='
bean_396'
}, Bean{name='
bean_398'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_400'
}, Bean{name='
bean_402'
}, Bean{name='
bean_404'
}, Bean{name='
bean_406'
}, Bean{name='
bean_408'
}, Bean{name='
bean_410'
}, Bean{name='
bean_412'
}, Bean{name='
bean_414'
}, Bean{name='
bean_416'
}, Bean{name='
bean_418'
}, Bean{name='
bean_420'
}, Bean{name='
bean_422'
}, Bean{name='
bean_424'
}, Bean{name='
bean_426'
}, Bean{name='
bean_428'
}, Bean{name='
bean_430'
}, Bean{name='
bean_432'
}, Bean{name='
bean_434'
}, Bean{name='
bean_436'
}, Bean{name='
bean_438'
}, Bean{name='
bean_440'
}, Bean{name='
bean_442'
}, Bean{name='
bean_444'
}, Bean{name='
bean_446'
}, Bean{name='
bean_448'
}, Bean{name='
bean_450'
}, Bean{name='
bean_452'
}, Bean{name='
bean_452019-01-14 23:53:05.542 11086-11086/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: updated: [Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{n複製程式碼

資料量為 10 萬時(HashMap):

2019-01-14 23:50:59.931 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: calculateDiff cost 120ms.2019-01-14 23:50:59.932 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: added: [Bean{name='bean_100000'
}, Bean{name='bean_100001'
}, Bean{name='bean_100002'
}, Bean{name='bean_100003'
}, Bean{name='bean_100004'
}, Bean{name='bean_100005'
}, Bean{name='bean_100006'
}, Bean{name='bean_100007'
}, Bean{name='bean_100008'
}, Bean{name='bean_100009'
}, Bean{name='bean_100010'
}, Bean{name='bean_100011'
}, Bean{name='bean_100012'
}, Bean{name='bean_100013'
}, Bean{name='bean_100014'
}, Bean{name='bean_100015'
}, Bean{name='bean_100016'
}, Bean{name='bean_100017'
}, Bean{name='bean_100018'
}, Bean{name='bean_100019'
}, Bean{name='bean_100020'
}, Bean{name='bean_100021'
}, Bean{name='bean_100022'
}, Bean{name='bean_100023'
}, Bean{name='bean_100024'
}, Bean{name='bean_100025'
}, Bean{name='bean_100026'
}, Bean{name='bean_100027'
}, Bean{name='bean_100028'
}, Bean{name='bean_100029'
}, Bean{name='bean_100030'
}, Bean{name='bean_100031'
}, Bean{name='bean_100032'
}, Bean{name='bean_100033'
}, Bean{name='bean_100034'
}, Bean{name='bean_100035'
}, Bean{name='bean_100036'
}, Bean{name='bean_100037'
}, Bean{name='bean_100038'
}, Bean{name='bean_100039'
}, Bean{name='bean_100040'
}, Bean{name='bean_100041'
}, Bean{name='bean_100042'
}, Bean{name='bean_100043'
}, Bean{name='bean_100044'
}, Bean{name='bean_100045'
}, Bean{name='bean_100046'
}, Bean{name='bean_100047'
}, Bean{name='bean_100048'
}, Bean{name='bean_100049'
}, Bean{name='bean_100050'
}, Bean{name='bean_100051'
}, Bean{name='bean_100052'
}, Bean{name='bean_100053'
}, Bean{name='bean_100054'
}, Bean{name='bean_100055'
}, Bean{name='bean_100056'
}, Bean{name='bean_100057'
}, Bean{name='bean_100058'
}, Bean{name='bean_100059'
}, Bean{name='bean_100060'
}, Bean{name='bean_100061'
}, Bean{name='bean_100062'
}, Bean{name='bean_100063'
}, Bean{name='bean_100064'
}, Bean{name='bean_100065'
}, Bean{name='bean_100066'
}, Bean{name='bean_100067'
}, Bean{name='bean_100068'
}, Bean{name='bean_100069'
}, Bean{name='bean_100070'
}, Bean{name='bean_100071'
}, Bean{name='bean_100072'
}, Bean{name='bean_100073'
}, Bean{name='bean_100074'
}, Bean{name='bean_100075'
}, Bean{name='bean_100076'
}, Bean{name='bean_100077'
}, Bean{name='bean_100078'
}, Bean{name='bean_100079'
}, Bean{name='bean_100080'
}, Bean{name='bean_100081'
}, Bean{name='bean_100082'
}, Bean{name='bean_100083'
}, Bean{name='bean_100084'
}, Bean{name='bean_100085'
}, Bean{name='bean_100086'
}, Bean{name='bean_100087'
}, Bean{name='bean_100088'
}, Bean{name='bean_100089'
}, Bean{name='bean_100090'
}, Bean{name='bean_100091'
}, Bean{name='bean_100092'
}, Bean{name='bean_100093'
}, Bean{name='bean_100094'
}, Bean{name='bean_100095'
}, Bean{name='bean_100096'
}, Bean{name='bean_100097'
}, Bean{name='bean_100098'
}, Bean{name='bean_100099'
}, Bean{name='bean_100100'
}, Bean{name='bean_100101'
}, Bean{name='bean_100102'
}, Bean{name='bean_100103'
}, Bean{name='bean_100104'
}, Bean{name='bean_100105'
}, Bean{name='bean_100106'
}, Bean{name='bean_100107'
}, Bean{name='bean_100108'
}, Bean{name='bean_100109'
}, Bean{name='bean_100110'
}, Bean{name='bean_100111'
}, Bean{name='bean_100112'
}, Bean{name='bean_100113'
}, Bean{name='bean_100114'
}, Bean{name='bean_100115'
}, Bean{name='bean_100116'
}, Bean{name='bean_100117'
}, Bean{name='bean_100118'
}, Bean{name='bean_100119'
}, Bean{name='bean_100120'
}, Bean{name='bean_100121'
}, Bean{name='bean_100122'
}, Bean{name='bean_100123'
}, Bean{name='bean_100124'
}, Bean{name='bean_100125'
}, Bean{name='bean_100126'
}, Bean{name='bean_100127'
}, Bean{name='bean_100128'
}, Bean{name='bean_100129'
}, Bean{name='bean_100130'
}, Bean{name='bean_100131'
}, Bean{name='bean_100132'
}, Bean{name='bean_100133'
}, Bean{name='bean_100134'
}, Bean{name='bean_100135'
}, Bean{name='bean_100136'
}, Bean{name='bean_100137'
}, Bean{name='bean_100138'
}, Bean{name='bean_100139'
}, Bean{name='bean_100140'
}, Bean{name='bean_100141'
}, Bean{name='bean_100142'
}, Bean{name='bean_100143'
}, Bean{name='bean_100144'
}, Bean{name='bean_100145'
}, Bean{name='bean_100146'
}, Bean{name='bean_100147'
}, Bean{name='bean_100148'
}, Bean{name='bean_100149'
}, Bean{name='bean_100150'
}, Bean{name='bean_100151'
}, Bean{name='bean_100152'
}, Bean{name='bean_100153'
}, Bean{name='bean_100154'
}, Bean{na2019-01-14 23:50:59.933 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: deleted: [Bean{name='bean_0'
}, Bean{name='bean_2'
}, Bean{name='bean_4'
}, Bean{name='bean_6'
}, Bean{name='bean_8'
}, Bean{name='bean_10'
}, Bean{name='bean_12'
}, Bean{name='bean_14'
}, Bean{name='bean_16'
}, Bean{name='bean_18'
}, Bean{name='bean_20'
}, Bean{name='bean_22'
}, Bean{name='bean_24'
}, Bean{name='bean_26'
}, Bean{name='bean_28'
}, Bean{name='bean_30'
}, Bean{name='bean_32'
}, Bean{name='bean_34'
}, Bean{name='bean_36'
}, Bean{name='bean_38'
}, Bean{name='bean_40'
}, Bean{name='bean_42'
}, Bean{name='bean_44'
}, Bean{name='bean_46'
}, Bean{name='bean_48'
}, Bean{name='bean_50'
}, Bean{name='bean_52'
}, Bean{name='bean_54'
}, Bean{name='bean_56'
}, Bean{name='bean_58'
}, Bean{name='bean_60'
}, Bean{name='bean_62'
}, Bean{name='bean_64'
}, Bean{name='bean_66'
}, Bean{name='bean_68'
}, Bean{name='bean_70'
}, Bean{name='bean_72'
}, Bean{name='bean_74'
}, Bean{name='bean_76'
}, Bean{name='bean_78'
}, Bean{name='bean_80'
}, Bean{name='bean_82'
}, Bean{name='bean_84'
}, Bean{name='bean_86'
}, Bean{name='bean_88'
}, Bean{name='bean_90'
}, Bean{name='bean_92'
}, Bean{name='bean_94'
}, Bean{name='bean_96'
}, Bean{name='bean_98'
}, Bean{name='bean_100'
}, Bean{name='bean_102'
}, Bean{name='bean_104'
}, Bean{name='bean_106'
}, Bean{name='bean_108'
}, Bean{name='bean_110'
}, Bean{name='bean_112'
}, Bean{name='bean_114'
}, Bean{name='bean_116'
}, Bean{name='bean_118'
}, Bean{name='bean_120'
}, Bean{name='bean_122'
}, Bean{name='bean_124'
}, Bean{name='bean_126'
}, Bean{name='bean_128'
}, Bean{name='bean_130'
}, Bean{name='bean_132'
}, Bean{name='bean_134'
}, Bean{name='bean_136'
}, Bean{name='bean_138'
}, Bean{name='bean_140'
}, Bean{name='bean_142'
}, Bean{name='bean_144'
}, Bean{name='bean_146'
}, Bean{name='bean_148'
}, Bean{name='bean_150'
}, Bean{name='bean_152'
}, Bean{name='bean_154'
}, Bean{name='bean_156'
}, Bean{name='bean_158'
}, Bean{name='bean_160'
}, Bean{name='bean_162'
}, Bean{name='bean_164'
}, Bean{name='bean_166'
}, Bean{name='bean_168'
}, Bean{name='bean_170'
}, Bean{name='bean_172'
}, Bean{name='bean_174'
}, Bean{name='bean_176'
}, Bean{name='bean_178'
}, Bean{name='bean_180'
}, Bean{name='bean_182'
}, Bean{name='bean_184'
}, Bean{name='bean_186'
}, Bean{name='bean_188'
}, Bean{name='bean_190'
}, Bean{name='bean_192'
}, Bean{name='bean_194'
}, Bean{name='bean_196'
}, Bean{name='bean_198'
}, Bean{name='bean_200'
}, Bean{name='bean_202'
}, Bean{name='bean_204'
}, Bean{name='bean_206'
}, Bean{name='bean_208'
}, Bean{name='bean_210'
}, Bean{name='bean_212'
}, Bean{name='bean_214'
}, Bean{name='bean_216'
}, Bean{name='bean_218'
}, Bean{name='bean_220'
}, Bean{name='bean_222'
}, Bean{name='bean_224'
}, Bean{name='bean_226'
}, Bean{name='bean_228'
}, Bean{name='bean_230'
}, Bean{name='bean_232'
}, Bean{name='bean_234'
}, Bean{name='bean_236'
}, Bean{name='bean_238'
}, Bean{name='bean_240'
}, Bean{name='bean_242'
}, Bean{name='bean_244'
}, Bean{name='bean_246'
}, Bean{name='bean_248'
}, Bean{name='bean_250'
}, Bean{name='bean_252'
}, Bean{name='bean_254'
}, Bean{name='bean_256'
}, Bean{name='bean_258'
}, Bean{name='bean_260'
}, Bean{name='bean_262'
}, Bean{name='bean_264'
}, Bean{name='bean_266'
}, Bean{name='bean_268'
}, Bean{name='bean_270'
}, Bean{name='bean_272'
}, Bean{name='bean_274'
}, Bean{name='bean_276'
}, Bean{name='bean_278'
}, Bean{name='bean_280'
}, Bean{name='bean_282'
}, Bean{name='bean_284'
}, Bean{name='bean_286'
}, Bean{name='bean_288'
}, Bean{name='bean_290'
}, Bean{name='bean_292'
}, Bean{name='bean_294'
}, Bean{name='bean_296'
}, Bean{name='bean_298'
}, Bean{name='bean_300'
}, Bean{name='bean_302'
}, Bean{name='bean_304'
}, Bean{name='bean_306'
}, Bean{name='bean_308'
}, Bean{name='bean_310'
}, Bean{name='bean_312'
}, Bean{name='bean_314'
}, Bean{name='bean_316'
}, Bean{name='bean_318'
}, Bean{name='bean_320'
}, Bean{name='bean_322'
}, Bean{name='bean_324'
}, Bean{name='bean_326'
}, Bean{name='bean_328'
}, Bean{name='bean_330'
}, Bean{name='bean_332'
}, Bean{name='bean_334'
}, Bean{name='bean_336'
}, Bean{name='bean_338'
}, Bean{name='bean_340'
}, Bean{name='bean_342'
}, Bean{name='bean_344'
}, Bean{name='bean_346'
}, Bean{name='bean_348'
}, Bean{name='bean_350'
}, Bean{name='bean_352'
}, Bean{name='bean_3542019-01-14 23:50:59.933 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil: updated: [Bean{name='multiple_of_3_bean_1002'
}, Bean{name='
multiple_of_3_bean_1005'
}, Bean{name='
multiple_of_3_bean_1008'
}, Bean{name='
multiple_of_3_bean_1011'
}, Bean{name='
multiple_of_3_bean_1014'
}, Bean{name='
multiple_of_3_bean_1017'
}, Bean{name='
multiple_of_3_bean_1020'
}, Bean{name='
multiple_of_3_bean_1023'
}, Bean{name='
multiple_of_3_bean_1026'
}, Bean{name='
multiple_of_3_bean_1029'
}, Bean{name='
multiple_of_3_bean_1032'
}, Bean{name='
multiple_of_3_bean_1035'
}, Bean{name='
multiple_of_3_bean_1038'
}, Bean{name='
multiple_of_3_bean_1041'
}, Bean{name='
multiple_of_3_bean_1044'
}, Bean{name='
multiple_of_3_bean_1047'
}, Bean{name='
multiple_of_3_bean_1050'
}, Bean{name='
multiple_of_3_bean_1053'
}, Bean{name='
multiple_of_3_bean_1056'
}, Bean{name='
multiple_of_3_bean_1059'
}, Bean{name='
multiple_of_3_bean_1062'
}, Bean{name='
multiple_of_3_bean_1065'
}, Bean{name='
multiple_of_3_bean_1068'
}, Bean{name='
multiple_of_3_bean_1071'
}, Bean{name='
multiple_of_3_bean_1074'
}, Bean{name='
multiple_of_3_bean_1077'
}, Bean{name='
multiple_of_3_bean_1080'
}, Bean{name='
multiple_of_3_bean_1083'
}, Bean{name='
multiple_of_3_bean_1086'
}, Bean{name='
multiple_of_3_bean_1089'
}, Bean{name='
multiple_of_3_bean_1092'
}, Bean{name='
multiple_of_3_bean_1095'
}, Bean{name='
multiple_of_3_bean_1098'
}, Bean{name='
multiple_of_3_bean_1101'
}, Bean{name='
multiple_of_3_bean_1104'
}, Bean{name='
multiple_of_3_bean_1107'
}, Bean{name='
multiple_of_3_bean_1110'
}, Bean{name='
multiple_of_3_bean_1113'
}, Bean{name='
multiple_of_3_bean_1116'
}, Bean{name='
multiple_of_3_bean_1119'
}, Bean{name='
multiple_of_3_bean_1122'
}, Bean{name='
multiple_of_3_bean_1125'
}, Bean{name='
multiple_of_3_bean_1128'
}, Bean{name='
multiple_of_3_bean_1131'
}, Bean{name='
multiple_of_3_bean_1134'
}, Bean{name='
multiple_of_3_bean_1137'
}, Bean{name='
multiple_of_3_bean_1140'
}, Bean{name='
multiple_of_3_bean_1143'
}, Bean{name='
multiple_of_3_bean_1146'
}, Bean{name='
multiple_of_3_bean_1149'
}, Bean{name='
multiple_of_3_bean_1152'
}, Bean{name='
multiple_of_3_bean_1155'
}, Bean{name='
multiple_of_3_bean_1158'
}, Bean{name='
multiple_of_3_bean_1161'
}, Bean{name='
multiple_of_3_bean_1164'
}, Bean{name='
multiple_of_3_bean_1167'
}, Bean{name='
multiple_of_3_bean_1170'
}, Bean{name='
multiple_of_3_bean_1173'
}, Bean{name='
multiple_of_3_bean_1176'
}, Bean{name='
multiple_of_3_bean_1179'
}, Bean{name='
multiple_of_3_bean_1182'
}, Bean{name='
multiple_of_3_bean_1185'
}, Bean{name='
multiple_of_3_bean_1188'
}, Bean{name='
multiple_of_3_bean_1191'
}, Bean{name='
multiple_of_3_bean_1194'
}, Bean{name='
multiple_of_3_bean_1197'
}, Bean{name='
multiple_of_3_bean_1200'
}, Bean{name='
multiple_of_3_bean_1203'
}, Bean{name='
multiple_of_3_bean_1206'
}, Bean{name='
multiple_of_3_bean_1209'
}, Bean{name='
multiple_of_3_bean_1212'
}, Bean{name='
multiple_of_3_bean_1215'
}, Bean{name='
multiple_of_3_bean_1218'
}, Bean{name='
multiple_of_3_bean_1221'
}, Bean{name='
multiple_of_3_bean_1224'
}, Bean{name='
multiple_of_3_bean_1227'
}, Bean{name='
multiple_of_3_bean_1230'
}, Bean{name='
multiple_of_3_bean_1233'
}, Bean{name='
multiple_of_3_bean_1236'
}, Bean{name='
multiple_of_3_bean_1239'
}, Bean{name='
multiple_of_3_bean_1242'
}, Bean{name='
multiple_of_3_bean_1245'
}, Bean{name='
multiple_of_3_bean_1248'
}, Bean{name='
multiple_of_3_bean_1251'
}, Bean{name='
multiple_of_3_bean_1254'
}, Bean{name='
multiple_of_3_bean_1257'
}, Bean{name='
multiple_of_3_bean_1260'
}, Bean{name='
multiple_of_3_bean_1263'
}, Bean{name='
multiple_of_3_bean_1266'
}, Bean{name='
multiple_of_3_bean_1269'
}, Bean{name='
multiple_of_3_bean_1272'
}, Bean{name='
multiple_of_3_bean_1275'
}, Bean{name='
multiple_of_3_bean_1278'
}, Bean{name='
multiple_of_3_bean_1281'
}, Bean{name='
multiple_of_3_bean_1284'
}, Bean{name='
multiple_of_3_bean_1287'
}, Bean{name='
multiple_of_3_bean_1290'
}, Bean{name='
multiple_of_3_bean_1293'
}, Bean{name='
multiple_of_3_bean_1296'
}, Bean{name='
multiple_of_3_bean_1299'
}, Bean{name='
multiple_of_3_bean_1302'
}, Bean{name='
multiple_of_3_bean_1305'
}, Bean{name='
multiple_of_3_bean_1308'
}, Bean{name='
multiple_of_3_bean_1311'
}, Bean{name='
multiple_of_3_bean_1314'
}, Bean{name='
multiple_of_3_bean_1317'
}, Bean{na2019-01-14 23:51:00.161 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: calculateDiff cost 66ms.2019-01-14 23:51:00.162 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: added: [Bean{name='
bean_100340'
}, Bean{name='
bean_100341'
}, Bean{name='
bean_100339'
}, Bean{name='
bean_100331'
}, Bean{name='
bean_100332'
}, Bean{name='
bean_100333'
}, Bean{name='
bean_100334'
}, Bean{name='
bean_100335'
}, Bean{name='
bean_100336'
}, Bean{name='
bean_100337'
}, Bean{name='
bean_100338'
}, Bean{name='
bean_100350'
}, Bean{name='
bean_100351'
}, Bean{name='
bean_100352'
}, Bean{name='
bean_100342'
}, Bean{name='
bean_100343'
}, Bean{name='
bean_100344'
}, Bean{name='
bean_100345'
}, Bean{name='
bean_100346'
}, Bean{name='
bean_100347'
}, Bean{name='
bean_100348'
}, Bean{name='
bean_100349'
}, Bean{name='
bean_100317'
}, Bean{name='
bean_100318'
}, Bean{name='
bean_100319'
}, Bean{name='
bean_100310'
}, Bean{name='
bean_100311'
}, Bean{name='
bean_100312'
}, Bean{name='
bean_100313'
}, Bean{name='
bean_100314'
}, Bean{name='
bean_100315'
}, Bean{name='
bean_100316'
}, Bean{name='
bean_100330'
}, Bean{name='
bean_100328'
}, Bean{name='
bean_100329'
}, Bean{name='
bean_100320'
}, Bean{name='
bean_100321'
}, Bean{name='
bean_100322'
}, Bean{name='
bean_100323'
}, Bean{name='
bean_100324'
}, Bean{name='
bean_100325'
}, Bean{name='
bean_100326'
}, Bean{name='
bean_100327'
}, Bean{name='
bean_100380'
}, Bean{name='
bean_100381'
}, Bean{name='
bean_100382'
}, Bean{name='
bean_100383'
}, Bean{name='
bean_100384'
}, Bean{name='
bean_100385'
}, Bean{name='
bean_100375'
}, Bean{name='
bean_100376'
}, Bean{name='
bean_100377'
}, Bean{name='
bean_100378'
}, Bean{name='
bean_100379'
}, Bean{name='
bean_100390'
}, Bean{name='
bean_100391'
}, Bean{name='
bean_100392'
}, Bean{name='
bean_100393'
}, Bean{name='
bean_100394'
}, Bean{name='
bean_100395'
}, Bean{name='
bean_100396'
}, Bean{name='
bean_100386'
}, Bean{name='
bean_100387'
}, Bean{name='
bean_100388'
}, Bean{name='
bean_100389'
}, Bean{name='
bean_100360'
}, Bean{name='
bean_100361'
}, Bean{name='
bean_100362'
}, Bean{name='
bean_100363'
}, Bean{name='
bean_100353'
}, Bean{name='
bean_100354'
}, Bean{name='
bean_100355'
}, Bean{name='
bean_100356'
}, Bean{name='
bean_100357'
}, Bean{name='
bean_100358'
}, Bean{name='
bean_100359'
}, Bean{name='
bean_100370'
}, Bean{name='
bean_100371'
}, Bean{name='
bean_100372'
}, Bean{name='
bean_100373'
}, Bean{name='
bean_100374'
}, Bean{name='
bean_100364'
}, Bean{name='
bean_100365'
}, Bean{name='
bean_100366'
}, Bean{name='
bean_100367'
}, Bean{name='
bean_100368'
}, Bean{name='
bean_100369'
}, Bean{name='
bean_100397'
}, Bean{name='
bean_100398'
}, Bean{name='
bean_100399'
}, Bean{name='
bean_100306'
}, Bean{name='
bean_100307'
}, Bean{name='
bean_100308'
}, Bean{name='
bean_100309'
}, Bean{name='
bean_100300'
}, Bean{name='
bean_100301'
}, Bean{name='
bean_100302'
}, Bean{name='
bean_100303'
}, Bean{name='
bean_100304'
}, Bean{name='
bean_100305'
}, Bean{name='
bean_100220'
}, Bean{name='
bean_100218'
}, Bean{name='
bean_100219'
}, Bean{name='
bean_100210'
}, Bean{name='
bean_100211'
}, Bean{name='
bean_100212'
}, Bean{name='
bean_100213'
}, Bean{name='
bean_100214'
}, Bean{name='
bean_100215'
}, Bean{name='
bean_100216'
}, Bean{name='
bean_100217'
}, Bean{name='
bean_100230'
}, Bean{name='
bean_100231'
}, Bean{name='
bean_100229'
}, Bean{name='
bean_100221'
}, Bean{name='
bean_100222'
}, Bean{name='
bean_100223'
}, Bean{name='
bean_100224'
}, Bean{name='
bean_100225'
}, Bean{name='
bean_100226'
}, Bean{name='
bean_100227'
}, Bean{name='
bean_100228'
}, Bean{name='
bean_100207'
}, Bean{name='
bean_100208'
}, Bean{name='
bean_100209'
}, Bean{name='
bean_100200'
}, Bean{name='
bean_100201'
}, Bean{name='
bean_100202'
}, Bean{name='
bean_100203'
}, Bean{name='
bean_100204'
}, Bean{name='
bean_100205'
}, Bean{name='
bean_100206'
}, Bean{name='
bean_100260'
}, Bean{name='
bean_100261'
}, Bean{name='
bean_100262'
}, Bean{name='
bean_100263'
}, Bean{name='
bean_100264'
}, Bean{name='
bean_100254'
}, Bean{name='
bean_100255'
}, Bean{name='
bean_100256'
}, Bean{name='
bean_100257'
}, Bean{name='
bean_100258'
}, Bean{name='
bean_100259'
}, Bean{name='
bean_100270'
}, Bean{name='
bean_100271'
}, Bean{name='
bean_100272'
}, Bean{name='
bean_100273'
}, Bean{name='
bean_100274'
}, Bean{name='
bean_100275'
}, Bean{name='
bean_100265'
}, Bean{name='
bean_100266'
}, Bean{name='
bean_100267'
}, Bean{name='
bean_100268'
}, Bean{name='
bean_100269'
}, Bean{name='
bean_100240'
}, Bean{n2019-01-14 23:51:00.162 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: deleted: [Bean{name='
bean_0'
}, Bean{name='
bean_2'
}, Bean{name='
bean_4'
}, Bean{name='
bean_6'
}, Bean{name='
bean_8'
}, Bean{name='
bean_10'
}, Bean{name='
bean_12'
}, Bean{name='
bean_14'
}, Bean{name='
bean_16'
}, Bean{name='
bean_18'
}, Bean{name='
bean_20'
}, Bean{name='
bean_22'
}, Bean{name='
bean_24'
}, Bean{name='
bean_26'
}, Bean{name='
bean_28'
}, Bean{name='
bean_30'
}, Bean{name='
bean_32'
}, Bean{name='
bean_34'
}, Bean{name='
bean_36'
}, Bean{name='
bean_38'
}, Bean{name='
bean_40'
}, Bean{name='
bean_42'
}, Bean{name='
bean_44'
}, Bean{name='
bean_46'
}, Bean{name='
bean_48'
}, Bean{name='
bean_50'
}, Bean{name='
bean_52'
}, Bean{name='
bean_54'
}, Bean{name='
bean_56'
}, Bean{name='
bean_58'
}, Bean{name='
bean_60'
}, Bean{name='
bean_62'
}, Bean{name='
bean_64'
}, Bean{name='
bean_66'
}, Bean{name='
bean_68'
}, Bean{name='
bean_70'
}, Bean{name='
bean_72'
}, Bean{name='
bean_74'
}, Bean{name='
bean_76'
}, Bean{name='
bean_78'
}, Bean{name='
bean_80'
}, Bean{name='
bean_82'
}, Bean{name='
bean_84'
}, Bean{name='
bean_86'
}, Bean{name='
bean_88'
}, Bean{name='
bean_90'
}, Bean{name='
bean_92'
}, Bean{name='
bean_94'
}, Bean{name='
bean_96'
}, Bean{name='
bean_98'
}, Bean{name='
bean_100'
}, Bean{name='
bean_102'
}, Bean{name='
bean_104'
}, Bean{name='
bean_106'
}, Bean{name='
bean_108'
}, Bean{name='
bean_110'
}, Bean{name='
bean_112'
}, Bean{name='
bean_114'
}, Bean{name='
bean_116'
}, Bean{name='
bean_118'
}, Bean{name='
bean_120'
}, Bean{name='
bean_122'
}, Bean{name='
bean_124'
}, Bean{name='
bean_126'
}, Bean{name='
bean_128'
}, Bean{name='
bean_130'
}, Bean{name='
bean_132'
}, Bean{name='
bean_134'
}, Bean{name='
bean_136'
}, Bean{name='
bean_138'
}, Bean{name='
bean_140'
}, Bean{name='
bean_142'
}, Bean{name='
bean_144'
}, Bean{name='
bean_146'
}, Bean{name='
bean_148'
}, Bean{name='
bean_150'
}, Bean{name='
bean_152'
}, Bean{name='
bean_154'
}, Bean{name='
bean_156'
}, Bean{name='
bean_158'
}, Bean{name='
bean_160'
}, Bean{name='
bean_162'
}, Bean{name='
bean_164'
}, Bean{name='
bean_166'
}, Bean{name='
bean_168'
}, Bean{name='
bean_170'
}, Bean{name='
bean_172'
}, Bean{name='
bean_174'
}, Bean{name='
bean_176'
}, Bean{name='
bean_178'
}, Bean{name='
bean_180'
}, Bean{name='
bean_182'
}, Bean{name='
bean_184'
}, Bean{name='
bean_186'
}, Bean{name='
bean_188'
}, Bean{name='
bean_190'
}, Bean{name='
bean_192'
}, Bean{name='
bean_194'
}, Bean{name='
bean_196'
}, Bean{name='
bean_198'
}, Bean{name='
bean_200'
}, Bean{name='
bean_202'
}, Bean{name='
bean_204'
}, Bean{name='
bean_206'
}, Bean{name='
bean_208'
}, Bean{name='
bean_210'
}, Bean{name='
bean_212'
}, Bean{name='
bean_214'
}, Bean{name='
bean_216'
}, Bean{name='
bean_218'
}, Bean{name='
bean_220'
}, Bean{name='
bean_222'
}, Bean{name='
bean_224'
}, Bean{name='
bean_226'
}, Bean{name='
bean_228'
}, Bean{name='
bean_230'
}, Bean{name='
bean_232'
}, Bean{name='
bean_234'
}, Bean{name='
bean_236'
}, Bean{name='
bean_238'
}, Bean{name='
bean_240'
}, Bean{name='
bean_242'
}, Bean{name='
bean_244'
}, Bean{name='
bean_246'
}, Bean{name='
bean_248'
}, Bean{name='
bean_250'
}, Bean{name='
bean_252'
}, Bean{name='
bean_254'
}, Bean{name='
bean_256'
}, Bean{name='
bean_258'
}, Bean{name='
bean_260'
}, Bean{name='
bean_262'
}, Bean{name='
bean_264'
}, Bean{name='
bean_266'
}, Bean{name='
bean_268'
}, Bean{name='
bean_270'
}, Bean{name='
bean_272'
}, Bean{name='
bean_274'
}, Bean{name='
bean_276'
}, Bean{name='
bean_278'
}, Bean{name='
bean_280'
}, Bean{name='
bean_282'
}, Bean{name='
bean_284'
}, Bean{name='
bean_286'
}, Bean{name='
bean_288'
}, Bean{name='
bean_290'
}, Bean{name='
bean_292'
}, Bean{name='
bean_294'
}, Bean{name='
bean_296'
}, Bean{name='
bean_298'
}, Bean{name='
bean_300'
}, Bean{name='
bean_302'
}, Bean{name='
bean_304'
}, Bean{name='
bean_306'
}, Bean{name='
bean_308'
}, Bean{name='
bean_310'
}, Bean{name='
bean_312'
}, Bean{name='
bean_314'
}, Bean{name='
bean_316'
}, Bean{name='
bean_318'
}, Bean{name='
bean_320'
}, Bean{name='
bean_322'
}, Bean{name='
bean_324'
}, Bean{name='
bean_326'
}, Bean{name='
bean_328'
}, Bean{name='
bean_330'
}, Bean{name='
bean_332'
}, Bean{name='
bean_334'
}, Bean{name='
bean_336'
}, Bean{name='
bean_338'
}, Bean{name='
bean_340'
}, Bean{name='
bean_342'
}, Bean{name='
bean_344'
}, Bean{name='
bean_346'
}, Bean{name='
bean_348'
}, Bean{name='
bean_350'
}, Bean{name='
bean_352'
}, Bean{name='
bean_352019-01-14 23:51:00.163 10171-10171/com.yuloran.wanandroid_java D/WanAndroid: DiffUtil2: updated: [Bean{name='multiple_of_3_bean_1011'
}, Bean{name='multiple_of_3_bean_1008'
}, Bean{name='multiple_of_3_bean_1005'
}, Bean{name='multiple_of_3_bean_1002'
}, Bean{name='multiple_of_3_bean_1020'
}, Bean{name='multiple_of_3_bean_1017'
}, Bean{name='multiple_of_3_bean_1014'
}, Bean{name='multiple_of_3_bean_1032'
}, Bean{name='multiple_of_3_bean_1029'
}, Bean{name='multiple_of_3_bean_1026'
}, Bean{name='multiple_of_3_bean_1023'
}, Bean{name='multiple_of_3_bean_1044'
}, Bean{name='multiple_of_3_bean_1041'
}, Bean{name='multiple_of_3_bean_1038'
}, Bean{name='multiple_of_3_bean_1035'
}, Bean{name='multiple_of_3_bean_1053'
}, Bean{name='multiple_of_3_bean_1050'
}, Bean{name='multiple_of_3_bean_1047'
}, Bean{name='multiple_of_3_bean_1065'
}, Bean{name='multiple_of_3_bean_1062'
}, Bean{name='multiple_of_3_bean_1059'
}, Bean{name='multiple_of_3_bean_1056'
}, Bean{name='multiple_of_3_bean_1077'
}, Bean{name='multiple_of_3_bean_1074'
}, Bean{name='multiple_of_3_bean_1071'
}, Bean{name='multiple_of_3_bean_1068'
}, Bean{name='multiple_of_3_bean_1080'
}, Bean{name='multiple_of_3_bean_1086'
}, Bean{name='multiple_of_3_bean_1083'
}, Bean{name='multiple_of_3_bean_1098'
}, Bean{name='multiple_of_3_bean_1095'
}, Bean{name='multiple_of_3_bean_1092'
}, Bean{name='multiple_of_3_bean_1089'
}, Bean{name='multiple_of_3_bean_1110'
}, Bean{name='multiple_of_3_bean_1107'
}, Bean{name='multiple_of_3_bean_1104'
}, Bean{name='multiple_of_3_bean_1101'
}, Bean{name='multiple_of_3_bean_1116'
}, Bean{name='multiple_of_3_bean_1113'
}, Bean{name='multiple_of_3_bean_1119'
}, Bean{name='multiple_of_3_bean_1131'
}, Bean{name='multiple_of_3_bean_1128'
}, Bean{name='multiple_of_3_bean_1125'
}, Bean{name='multiple_of_3_bean_1122'
}, Bean{name='multiple_of_3_bean_1143'
}, Bean{name='multiple_of_3_bean_1140'
}, Bean{name='multiple_of_3_bean_1137'
}, Bean{name='multiple_of_3_bean_1134'
}, Bean{name='multiple_of_3_bean_1152'
}, Bean{name='multiple_of_3_bean_1149'
}, Bean{name='multiple_of_3_bean_1146'
}, Bean{name='multiple_of_3_bean_1164'
}, Bean{name='multiple_of_3_bean_1161'
}, Bean{name='multiple_of_3_bean_1158'
}, Bean{name='multiple_of_3_bean_1155'
}, Bean{name='multiple_of_3_bean_1176'
}, Bean{name='multiple_of_3_bean_1173'
}, Bean{name='multiple_of_3_bean_1170'
}, Bean{name='multiple_of_3_bean_1167'
}, Bean{name='multiple_of_3_bean_1185'
}, Bean{name='multiple_of_3_bean_1182'
}, Bean{name='multiple_of_3_bean_1179'
}, Bean{name='multiple_of_3_bean_1197'
}, Bean{name='multiple_of_3_bean_1194'
}, Bean{name='multiple_of_3_bean_1191'
}, Bean{name='multiple_of_3_bean_1188'
}, Bean{name='multiple_of_3_bean_1206'
}, Bean{name='multiple_of_3_bean_1203'
}, Bean{name='multiple_of_3_bean_1200'
}, Bean{name='multiple_of_3_bean_1209'
}, Bean{name='multiple_of_3_bean_1215'
}, Bean{name='multiple_of_3_bean_1212'
}, Bean{name='multiple_of_3_bean_1218'
}, Bean{name='multiple_of_3_bean_1230'
}, Bean{name='multiple_of_3_bean_1227'
}, Bean{name='multiple_of_3_bean_1224'
}, Bean{name='multiple_of_3_bean_1221'
}, Bean{name='multiple_of_3_bean_1242'
}, Bean{name='multiple_of_3_bean_1239'
}, Bean{name='multiple_of_3_bean_1236'
}, Bean{name='multiple_of_3_bean_1233'
}, Bean{name='multiple_of_3_bean_1251'
}, Bean{name='multiple_of_3_bean_1248'
}, Bean{name='multiple_of_3_bean_1245'
}, Bean{name='multiple_of_3_bean_1263'
}, Bean{name='multiple_of_3_bean_1260'
}, Bean{name='multiple_of_3_bean_1257'
}, Bean{name='multiple_of_3_bean_1254'
}, Bean{name='multiple_of_3_bean_1275'
}, Bean{name='multiple_of_3_bean_1272'
}, Bean{name='multiple_of_3_bean_1269'
}, Bean{name='multiple_of_3_bean_1266'
}, Bean{name='multiple_of_3_bean_1284'
}, Bean{name='multiple_of_3_bean_1281'
}, Bean{name='multiple_of_3_bean_1278'
}, Bean{name='multiple_of_3_bean_1296'
}, Bean{name='multiple_of_3_bean_1293'
}, Bean{name='multiple_of_3_bean_1290'
}, Bean{name='multiple_of_3_bean_1287'
}, Bean{name='multiple_of_3_bean_1299'
}, Bean{name='multiple_of_3_bean_1305'
}, Bean{name='multiple_of_3_bean_1302'
}, Bean{name='multiple_of_3_bean_1308'
}, Bean{name='multiple_of_3_bean_1314'
}, Bean{name='multiple_of_3_bean_1311'
}, Bean{name='multiple_of_3_bean_1317'
}, Bean{n複製程式碼

顯然,在資料量比較大時,還是 HashMap 的效能好!

結語

還好,筆者在專案中雖然沒有使用 Map,但是使用的 ArrayList,LinkedList 只是想想而已。

來源:https://juejin.im/post/5c3c8956f265da61715e8c56

相關文章