本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Java中使用List集合实现去重复的功能

发布于2020-11-19 20:22     阅读(702)     评论(0)     点赞(13)     收藏(4)


public class ListPractice{

	public static void main(String[] args) {
		//1.定义一个List集合
		List<Object> list = new ArrayList<Object>();//父类引用子类对象,向上转型
		//先添加一些数据
		list.add("张三");//String类型
		list.add("李四");
		list.add(2020);//这里统一会将基本数据类型包装成其包装类,即Integer类型
		list.add(1970);
		list.add('a');//Character类型
		list.add('b');
		list.add(11.18f);//Float类型
		list.add(1.1f);
		//再添加一些重复的数据
		list.add("李四");
		list.add(1970);
		list.add('a');
		list.add(1.1f);	
		//到此为止,List集合算是创建完毕。
		//2.接下来需要定义一个去重复数据的方法
		list = getList(list);//通过调用getList方法,得到去重复后的List集合
		System.out.println(list);
	}

	//去重复的方法
	public static List getList(List list) {
		ListIterator li = list.listIterator();//获取传来的List集合对象list的迭代器,用List迭代器接收
		int index = 0;//计算循环次数,当循环次数
		Object object;//用于接收每次循环第一次遍历的第一个值,用于与后续遍历的值做比较
		Object object1;//用于接收每次循环第一次遍历之后的值,用于与第一个值做比较
		for(;true;) {
			//在循环一开始进行判断,用于结束死循环。
			if(index==list.size()) {
				break;
			}
			object = null;//每次循环都需要初始化,即复原
			object1 = null;//每次循环都需要初始化,即复原
			while (li.hasNext()) {//迭代器中的方法,用于判断集合中是否存还在下一个数据
				if (object==null) {//控制每次迭代器遍历只会赋一次值
					for(int i=0;i<index;i++) {//该方法用于定位object的值,就是确保每次死循环的object值是下一个
						li.next();
					}
					object = li.next();//每次死循环不变的值
				}else {
					object1 = li.next();//用于被比较的值
					if(object.equals(object1)) {//判断被比较的值是否已存在,存在就移除掉。
						li.remove();
					}
				}
			}
			index++;
			li = list.listIterator();//不管执行了List迭代器的remove()方法与否,都重新初始化一次,这个操作就是确保数据是最新的。
		}
		return list;//返回去重复后的list
	}
}


所属网站分类: 技术文章 > 博客

作者:gogogo

链接:http://www.javaheidong.com/blog/article/802/557b654ded9ac86cb33f/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

13 0
收藏该文
已收藏

评论内容:(最多支持255个字符)