如图是迭代器的原理方法和Iteratoe中的两个方法 hasNext next
//注意:以下讲解的遍历方式/迭代方式,是所有Collection通用的一种方式。 //在Map集合中不能使用,在所有的Collection以及子类中使用 //创建集合对象 Collection c=new HashSet();//后面集合无所谓,主要是看前面的Collection接口怎么遍历/迭代。 c.add("abc"); c.add("def"); c.add(100); c.add(new Object()); //对集合Collection进行遍历/迭代 //第一步:获取集合对象的迭代器对象Iterator Iterator it=c.iterator(); //第二步:通过以上获取的迭代器对象开始迭代/遍历集合。 /* 以下两个方法是迭代器对象Iterator中的方法 boolean hasNext() 返回 true如果迭代具有更多的元素。 E next() 返回迭代中的下一个元素。 这个方法让迭代器前进一位,并且将指向的元素返回(拿到) */ while (it.hasNext()){ System.out.println(it.next()); } 以下是创建的HashSet集合 //HashSet集合:无序不可重复 //创建集合对象 Collection collection=new HashSet(); //添加集合元素 //无序:存进去和取出的顺序不一定相同 collection.add(100); collection.add(400); collection.add(90); collection.add(500); collection.add(300); collection.add(50); collection.add(70); collection.add(100); //迭代集合 Iterator iterator=collection.iterator(); while (iterator.hasNext()){ System.out.println(iterator.next()); }
深入Collection集合的contains方法:
boolean contains(Object o) 判断集合是否包含某个对象o,如果包含返回true否则返回false
Collection c=new ArrayList();
String s1= new String ("abc");//s1=0x1111
c.add(s1);
String s2=new String("def");//s2=0x2222
c.add(s2);
System.out.println("集合元素的个数"+c.size());
String x=new String ("abc");//x=0x5555
System.out.println(x.equals(s1));//true
System.out.println(c.contains(x));//true
//contains中调用的是equals方法,equals方法比较的是String类型的内容。
测试contains方法
放在一个集合里的类型,一定要重写equals方法。
测试remove方法
放在一个集合里的类型,一定要重写equals方法。
public static void main(String[] args) {
Collection c=new ArrayList();
//创建用户对象
User u1=new User("jack");
User u2=new User("jack");
c.add(u1);
System.out.println(c.contains(u2));
Collection cc=new ArrayList();
String s1=new String("hello");
cc.add(s1);
String s2=new String("hello");
cc.remove(s2);
System.out.println(cc.size());
}
}
class User{
private String name;
public User() {
}
public User(String name) {
this.name = name;
}
//重写equals方法
//这个equals比较原理,只要人名一样,返回true
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name);
}