场景:修改商品状态
是这样的有两张表,一张是主表,一张是子表,根据SAP传递的流水号和批次号,更新状态.因为主表中的流水号,对应多件商品的批次号,所以更新批次号的时候也需要更新主表中的商品总状态,因约定过,同一批商品的状态必须一致,所以不考虑不同状态,更新主表问题.我是先操作更新了子表中的商品状态,然后再更新主表状态,更新子表根据批次号,更新主表根据流水号,这样正常操作下,一起更新实际上也没什么问题,无奈旁边坐一个大佬,看了一眼就说,你这样重复更新没有任何意义,因为调你的SAP方发送是根据子表的批次号给你状态的,但是每一个信息都附加一个主表的流水号,这样流水号重复了,你放到同一个循环中更新就重复更新主表状态了,这样会对数据库造成压力,所以你看看优化一下,先给主表去重,然后在更新.然后我就问了一个非常低级的问题,list集合怎么去重…然后大佬说,唉,用set啊,你这问题问的.
然后就给我写了段代码,以下是自己测试写的main方法
public static void main(String[] args) {
List<String> list=Lists.newArrayList();
list.add("1");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("4");
list.add("5");
list.add("6");
list.add("6");
System.out.println("去重前:"+list);
Set<String> set=Sets.newHashSet();
List<String> list2 = Lists.newArrayList();
for (String str : list) {
if(!set.contains(str)) {
set.add(str);
list2.add(str);
}
}
System.out.println("去重后:"+list2);
}
结果:
去重前:[1, 1, 2, 3, 4, 4, 5, 6, 6]
去重后:[1, 2, 3, 4, 5, 6]
其中用了SET的contains方法,这个方法表示:
Java 集合类中的 Set.contains() 方法判断 Set 集合是否包含指定的对象。该方法返回值为 boolean 类型,如果 Set 集合包含指定的对象,则返回 true,否则返回 false。
果然又学到了
来源:CSDN
作者:G_whang
链接:https://blog.csdn.net/G_whang/article/details/103827000