list元素去重的问题情况

本文提供了一个使用Java实现的List去重示例,通过遍历List并利用StringBuilder来检查重复项,最终移除所有重复元素。代码展示了如何区分重复与非重复元素,并给出其在List中的位置。

附上问题代码情况

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());

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值