集合中的迭代

来源:互联网 发布:淘宝打印发货单软件 编辑:程序博客网 时间:2024/05/22 20:32
package com.beiwo.list;
import java.util.*;
public class Test {
/**
* 写一个方法, 用来清除 List 集合中的 重复元素

* 如果书Book 的编号一样,那么就认为是重复的元素

*/
public static void main(String[] args) {
ArrayList list = new ArrayList();
Book b1 = new Book(101, "红楼梦");
Book b2 = new Book(102, "西游记");
Book b3 = new Book(103, "水浒传");
Book b4 = new Book(104, "三国演义");
Book b5 = new Book(101, "冰与火之歌"); 


list.add(b1);
list.add(b2);
list.add(b3);
list.add(b4);
list.add(b5);
list.add(new Book(104, "三国演义"));
list.add(new Book(105, "群鸦的盛宴"));
list.add(new Book(102, "血色婚礼"));

//测试写的方法
ArrayList newList = clearRepeatElements(list);
System.out.println(list);
System.out.println(newList);
}
//第一种迭代方式
public static ArrayList clearRepeatElements(ArrayList list){
//1.先创建一个 新的 ArrayList 集合对象, 然后用来把找到的不重复的数据装进去
ArrayList newList = new ArrayList();

//遍历 原本的list 集合,把元素一个一个拿出来,放入到新的集合,如果 已经放过了,那么不放了
//2.获取到list集合的 迭代器 进行迭代
Iterator it =  list.iterator();//多个标记 ——ListIterator是一个原始类型。
                                           //泛型类型的引用ListIterator < E > 参数化
while(it.hasNext()){
//获取到每一个 元素
Book book = (Book)it.next();//本身是Iterator类型的
//再 判断新的集合中是否包含 这个元素,如果不包含,就放入新的集合中
if(!newList.contains(book)){ //如果不包含元素,那么就存入到这个 集合中
newList.add(book);
}
}
return newList;
}

/*

       //第二种迭代方式

public static ArrayList clearRepeatElements(ArrayList List){
ArrayList newList = new ArrayList();
for(int i = 0;i < List.size();i++){
if(newList.containsAll(List)){
break;
}else{
newList.add(List);
}return newList;
}return newList;
}*/
}


class Book{

//编号 和 书名 作为属性保存一本书的信息
int id;
String name;

//构造方法
public Book(int id, String name){

this.id = id;
this.name = name;
}

//重写toString方法,否则是类名.包名.哈希值的
public String toString(){
return "{书名:" + name + ", 编号是:" + id + "}";
}

//重写equals方法,否则是针对 hashCode进行的比较。 
public boolean equals(Object obj){   //重写equals方法,类型转换
Book book =(Book)obj;
//只要编号一致,那么就认为是重复的元素
return this.id == book.id && this.name.equals(book.name);
}
}
0 0
原创粉丝点击