List用法总结

来源:互联网 发布:软件开发企业 编辑:程序博客网 时间:2024/04/30 10:35

List使用会有一些比较奇怪的问题,使用时需要注意

1. 情况1

想要按照索引值删除List的,但是会出现下列问题

public class ListUtils {/** * remove some indexs of list *  * @param originaList * @param removePositionList * @return */public List removeList(List originaList, List<Integer> removePositionList) {List removeList = new ArrayList();for (int position : removePositionList) {removeList.add(originaList.get(position));}originaList.removeAll(removeList);return originaList;}public static void main(String[] args) {ListUtils listUnits = new ListUtils();List a = new ArrayList();a.add(2);a.add(3);a.add(23);a.add(2);List<Integer> removePositionList = new ArrayList<Integer>();removePositionList.add(0);removePositionList.add(1);listUnits.removeList(a, removePositionList);System.out.println(a.toString());}}


本来预期的结果应该是[23,2] 但是实际结果是[2]

问题原因: List 允许重复的数据,但是用removeAll/或者remove的时候,并不一定删除一个,也会将重复的数据删除。

解决办法

/** * remove some indexs of list *  * @param originaList * @param removePositionList * @return */public List removeListRight(List originaList, List<Integer> removePositionList) {Collections.sort(removePositionList, Collections.<Integer>reverseOrder());for (int position : removePositionList) {originaList.remove(position);}return originaList;}



原创粉丝点击