附上问题代码情况
public static void listTest2(){
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
list.add("c");
list.add("c");
list.add("d");
list.add("f");
list.add("d");
list.add("b");
System.out.println(list);
//allpointName与newres一定是对应的 那么取出来才是正规的
StringBuilder builder = new StringBuilder();
//重复的下标集合
List<Integer> repeatList = new ArrayList<Integer>();
//没有重复的集合
List<Integer> noRepeatList = new ArrayList<Integer>();
for(int i = 0;i<list.size();i++){
if(builder.indexOf(","+list.get(i)+",") > -1) {
repeatList.add(i);
} else {
builder.append(",").append(list.get(i)).append(",");
noRepeatList.add(i);
}
}
System.out.println(noRepeatList);
System.out.println(repeatList);
/*根据相同的已经找出集合中重复的下标与未重复的下表 移除已重复的下标
将list集合中重复的元素移除掉 这就是为什么
*/
for(int i = 0;i<repeatList.size();i++){
list.remove(repeatList.get(i));
}
System.out.println(list);
}
运行的结果是
list: [a, b, c, c, d, f, d, b]
noRepeatList : [0, 1, 2, 4, 5]
repeatList : [3, 6, 7]
list ; [a, b, c, c, d, f, d, b]
for(int i = 0;i<repeatList.size();i++){
int j = repeatList.get(i);
list.remove(j);
}
//移除之后list的元素个数会少 再按照原来的下标移除 会出现下标越界的情况
//System.out.println(repeatList);
//重新写个集合将不重复的添加到此几何中
for(int i=0;i<noRepeatList.size();i++) {
list1.add(list.get(noRepeatList.get(i)));
}
System.out.println(list1+" " + list1.size());