工作上需要调第三方接口同步数据过来,一开始jsonString jsonObject转来转去一个同步接口得耗时5分钟,现在只需要0.5秒
1、反序列化相关json数据
//小括号里面的clazz非常重要
private static <T> Result<T> parseResult(String json, Class<T> clazz) {
return JSONObject.parseObject(json, new TypeReference<Result<T>>(clazz) {
});
}
2、增加相关实体的equals() 和hashcode()方法作为判断交并集的依据
@Override
public boolean equals(Object o)
{
if (this == o){
return true;
}
if (o == null || getClass() != o.getClass()){
return false;
}
JxbPoJo jxbPoJo = (JxbPoJo) o;
return Id.equals(jxbPoJo.Id);
}
@Override
public int hashCode()
{
return Id.hashCode();
}
3、两个集合取交并集的方法
/**
* 获取两个ArrayList的交集
*
* @param firstArrayList 第一个 ArrayList 集合
* @param secondArrayList 第二个 ArrayList 集合
* @return
*/
public static <T> List<T> receiveCollectionList(List<T> firstArrayList, List<T> secondArrayList)
{
if (firstArrayList == null || firstArrayList.size() == 0 || secondArrayList == null || secondArrayList.size() == 0)
{
return null;
}
/** 大集合用 LinkedList **/
LinkedList<T> result = new LinkedList<T>(firstArrayList);
/** 小集合用 HashSet **/
HashSet<T> othHash = new HashSet<T>(secondArrayList);
/** 采用Iterator迭代器进行数据的操作 **/
result.removeIf(t -> !othHash.contains(t));
return new ArrayList<>(result);
}
/**
* @param firstArrayList 第一个ArrayList
* @param secondArrayList 第二个ArrayList
* @return resultList 差集ArrayList
* @方法描述:获取两个ArrayList的差集
*/
public static <T> List<T> receiveDefectList(List<T> firstArrayList, List<T> secondArrayList)
{
List<T> resultList = new ArrayList<T>();
// 大集合用linkedlist
LinkedList<T> result = new LinkedList<T>(firstArrayList);
// 小集合用hashset
HashSet<T> othHash = new HashSet<T>(secondArrayList);
// 采用Iterator迭代器进行数据的操作
result.removeIf(othHash::contains);
resultList = new ArrayList<>(result);
firstArrayList.clear();
firstArrayList.addAll(resultList);
return firstArrayList;
}
相关文章:
https://blog.csdn.net/weixin_41922349/article/details/108759956
https://blog.csdn.net/tiger0709/article/details/81474461