List集合的去重

private boolean parseBookLanguage(final String jsonstr, final String orgGid) throws Exception {
//解析一个json串
JSONObject obj = JSONObject.parseObject(jsonstr);
// 返回true
if (obj.getBooleanValue(“RESULT”)) {
JSONArray arr = obj.getJSONArray(“DATA”);
开始考虑到用Set集合去重 但是set集合会将后面添加的对象删掉 保存的是原来的对象
CopyOnWriteArraySet和CopyOnWriteArrayList是一个安全线程的集合
// final Setset=new CopyOnWriteArraySet<>();
final List data = new CopyOnWriteArrayList<>();
for (int i = 0; i < arr.size(); i++) {
JSONObject langDicObject = arr.getJSONObject(i);
String langCodeSrc = langDicObject.getString(“LANGCODE”);
String langCode = IdGenerator.encodeBase64(langCodeSrc, orgGid);
OrgBookLangDicBO bookLangDicBO = new OrgBookLangDicBO(langCode, langDicObject.getString(“LANGNAME”),orgGid, langCodeSrc);
// 添加之前先查询之前集合是否包含这个对象
if (data.contains(bookLangDicBO)) {
data.remove(bookLangDicBO);//remove会将原来的移除
}
data.add(bookLangDicBO);
}
// 备份
boolean flag = dataTransferDAO.backupBookLanguage(orgGid);
// 删除
flag = dataTransferDAO.deleteBookLanguage(orgGid);
// 添加
flag = dataTransferDAO.insertBookLanguage(data);

        return flag;
    } else {
        // 返回的false
        throw new Exception(obj.toJSONString());
    }

}

//但是这样处理会比较繁琐 直接在循环获取对象的时候 从后往前取对象 避免就可以不用再替换了
private boolean parseBookLanguage(final String jsonstr, final String orgGid) throws Exception {
//解析一个json串
JSONObject obj = JSONObject.parseObject(jsonstr);
// 返回true
if (obj.getBooleanValue(“RESULT”)) {
JSONArray arr = obj.getJSONArray(“DATA”);

    final Set<OrgBookLangDicBO>set=new CopyOnWriteArraySet<>();
//  final List<OrgBookLangDicBO> data = new CopyOnWriteArrayList<>();
        for (int i = arr.size()-1; i >=0; i--) {
            JSONObject langDicObject = arr.getJSONObject(i);
            String langCodeSrc = langDicObject.getString("LANGCODE");
            String langCode = IdGenerator.encodeBase64(langCodeSrc, orgGid);
    OrgBookLangDicBO bookLangDicBO = new OrgBookLangDicBO(langCode,       langDicObject.getString("LANGNAME"),orgGid, langCodeSrc);
        // 添加之前先查询之前集合是否包含这个对象
    set.add(bookLangDicBO);
        // 备份
        boolean flag = dataTransferDAO.backupBookLanguage(orgGid);
        // 删除
        flag = dataTransferDAO.deleteBookLanguage(orgGid);
        // 添加
        flag = dataTransferDAO.insertBookLanguage(data);

        return flag;
    } else {
        // 返回的false
        throw new Exception(obj.toJSONString());
    }

}

猜你喜欢

转载自blog.csdn.net/qq_38743952/article/details/78330280