1. 现象:将数组转为List后进行removeAll()操作,报java.lang.UnsupportedOperationException错误。
代码:
/**
* 获取标记ID
* @return 标记ID
*/
private Long getSignId() {
Long[] signIds = {1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L};
List<Long> allSignIds = Arrays.asList(signIds);
List<Long> existsSignIds = groupManageMapper.findSignId();
// 留下未用的标记ID
allSignIds.removeAll(existsSignIds);
return allSignIds.size() == ? null : allSignIds.get();
}
错误:
java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:)
at java.util.AbstractList$Itr.remove(AbstractList.java:)
at java.util.AbstractCollection.removeAll(AbstractCollection.java:)
解决方式:
/**
* 获取标记ID
* @return 标记ID
*/
private Long getSignId() {
Long[] signIds = {1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 23L, 24L, 25L,
26L, 27L, 28L, 29L, 30L, 31L, 32L, 33L, 34L, 35L, 36L, 37L, 38L, 39L, 40L, 41L, 42L, 43L, 44L, 45L, 46L, 47L, 48L, 49L, 50L};
List<Long> allSignIds = new ArrayList<>(Arrays.asList(signIds));
List<Long> existsSignIds = groupManageMapper.findSignId();
// 留下未用的标记ID
allSignIds.removeAll(existsSignIds);
return allSignIds.size() == ? null : allSignIds.get();
}
详解:数组转化为List的注意点
A. 该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean,char);
B. 该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新;
C. 不支持add、remove、removeAll和clear方法。
2. 现象:前端传递时间参数,后端Date类型无法接收;后端传递Date类型时间数据,前端展示不友好
错误:
解决: