关java集合迭代的问题

如图是迭代器的原理方法和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);
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值