新津李老八の博客之集合(2)

        上回说到,Collection. 那现在继续:
关于 java.util.Collection 接口中的常用方法。
       1.Collection中能存放什么样的元素?
              在没有使用泛型之前,Collection中可以存放Object类中的所有子类型;
              在使用泛型后, Collection中只能存储某个具体的类型;
              集合中不能直接存放基本数据类型,也不能存放Java对象,只能存放Java对象的内存地址;

       2.Collection中的常用方法:
              boolean add(Object e);               向集合中添加元素
              int size();                                     获取集合中元素的个数,不是获取该集合的容量
              void clear();                                 清空集合中的元素
              boolean contains(Object o);        判断某元素是否在当前集合中
              boolean remove(Object o);          删除集合中的某个元素
              boolean isEmpty();                      判断该集合中元素的个数是否为0
              Object[] toArray();                        将集合转换为数组

public class CollectionTest01 {
    public static void main(String[] args) {

        //Collection c = new Collection(); 接口是抽象的,无法实例化

        //多态
        Collection c = new ArrayList();

        //向集合中添加元素
        c.add(100);//自动装箱(java5新特新)。实际上是放进去一个对象的内存地址。Integer x = new Integer(100);
        c.add(3.14);//自动装箱
        c.add(new Object());
        c.add(new Student());
        c.add(true);//自动装箱
        c.add("dasdasdasdasda");//该对象的内存地址放到了集合中

        //获取集合中元素的个数
        System.out.println("集合中元素的个数是:" + c.size());  //集合中元素的个数是:6

        //清空集合中的元素
        c.clear();
        System.out.println("集合中元素的个数是:" + c.size());  //集合中元素的个数是:0
        //再向集合中添加元素
        c.add("hello");//"hello"对象的内存地址添加进集合中
        c.add("world");
        c.add("dzhcool");

        //判断某元素是否在集合中
        boolean flag = c.contains("1111111");
        System.out.println(flag);//false
        System.out.println(c.contains("dzhcool"));//true

        int a = c.size();
        System.out.println("集合中元素的个数是:" + a);//集合中元素的个数是:3

        //删除集合中的某个元素
        c.remove("hello");
        System.out.println("集合中元素的个数是:" + c.size());//集合中元素的个数是:2

        //判断该集合中元素的个数是否为0
        System.out.println(c.isEmpty());//false
        c.clear();
        System.out.println(c.isEmpty());//true


        c.add(123);
        c.add(123);
        c.add(123);
        c.add(123);
        System.out.println("集合中元素的个数是:" + c.size());
        //将集合转换为数组
        Object[] d = c.toArray();
        for (int i = 0; i < d.length; i++) {
            System.out.print(d[i] + " ");
        }
        System.out.println();

    }
}
class Student{

}

代码执行结果:

"C:\Program Files\Java\jdk-14.0.1\bin\java.exe" "-javaagent:F:\IntelliJ IDEA 2020.1.1\lib\idea_rt.jar=50284:F:\IntelliJ IDEA 2020.1.1\bin" -Dfile.encoding=UTF-8 -classpath F:\IdeaProjects\javase\out\production\collection com.dzhcool.javase.day01.CollectionTest01
集合中元素的个数是:6
集合中元素的个数是:0
false
true
集合中元素的个数是:3
集合中元素的个数是:2
false
true
集合中元素的个数是:4
123 123 123 123 

Process finished with exit code 0

那么怎么遍历集合中的元素呢?
1.for循环遍历,使用下标的方式(只针对有下标的集合);
2.使用foreach;
3.使用迭代器的方式;
迭代器的执行原理:

在这里插入图片描述

在这里插入图片描述

package com.dzhcool.javase.day01;

import java.util.*;

/*
集合使用foreach
 */
public class ForEachTest02 {
    public static void main(String[] args) {
        List<String> stringList = new ArrayList<>();
        stringList.add("123");
        stringList.add("dzhcool");
        stringList.add("http://www.baidu.com");

        //遍历,使用迭代器的方式
        Iterator<String> it = stringList.iterator();
        while (it.hasNext()){
            String str = it.next();
            System.out.println(str);
        }
        System.out.println("****************************************");
        //遍历,使用下标方式(只针对有下标的集合)
        for (int i = 0; i < stringList.size(); i++) {
            System.out.println(stringList.get(i));
        }
        System.out.println("****************************************");
        //遍历,使用foreach方式
        for (String data:stringList) {
            System.out.println(data);
        }
    }
}

迭代器,可能现在看不懂,别着急这不就来了嘛👇

package com.dzhcool.javase.day01;

import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;

/*
关于集合遍历/迭代

迭代器是一个对象
 */
public class CollectionTest02 {
    public static void main(String[] args) {
        //注意:以下讲解的遍历方式/迭代方式,是所有Collection通用的一种方式。
        //再Map集合中不能用。在所有的Collection以及子类中使用
        //创建集合对象
        Collection c = new HashSet();
        //添加元素
        c.add("abc");
        c.add("def");
        c.add(100);
        c.add(new Object());

        //对集合Collection进行遍历/迭代
        //第一步:获取集合对象的迭代器对象Iterator
        Iterator it = c.iterator();
        //第二步:通过以上获取迭代器对象开始迭代/遍历集合
        /*
            以下有两个方法是迭代器对象Iterator中的方法
                boolean hasNext(); 如果仍有元素可以迭代,则返回true
                Object next();     返回迭代的下一个元素
         */
        while (it.hasNext()){
            Object obj = it.next();
            System.out.println(obj);
        }

        //一直取,不判断,会出现 java.util.NoSuchElementException
        /*
        boolean hasNext = it.hasNext();
        System.out.println(it.hasNext());
        if (hasNext) {
            //不管你当初存进去什么,取出来统一都是Object
            Object obj = it.next();
            System.out.println(obj);
        }
        hasNext = it.hasNext();
        System.out.println(it.hasNext());
        if (hasNext) {
            Object obj = it.next();
            System.out.println(obj);
        }
        hasNext = it.hasNext();
        System.out.println(it.hasNext());
        if (hasNext) {
            Object obj = it.next();
            System.out.println(obj);
        }

        hasNext = it.hasNext();
        System.out.println(it.hasNext());
        if (hasNext) {
            Object obj = it.next();
            System.out.println(obj);
        }

        hasNext = it.hasNext();
        System.out.println(it.hasNext());
        if (hasNext) {
            Object obj = it.next();
            System.out.println(obj);
        }
         */

    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值