java学习笔记20(Arraylist复习,Collection接口方法,迭代器,增强型for循环)

集合:集合是Java提供的一种容器,可以用来存储多个数据;

集合与数组的区别:集合的长度是可变的,数组的长度是固定的

         集合中存储的数据必须是引用类型数据;

ArrayList回顾:

public class Person {
    private String name;
    private int age;
    
    public Person() {
        super();
    }
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    @Override
    public String toString() {
        return "Person [name=" + name + ", age=" + age + "]";
    }
    
}
import java.util.ArrayList;

public class Demo1 {
    public static void main(String[] args) {
        ArrayList<Integer> arr=new ArrayList<>();
        arr.add(1);
        arr.add(2);
        arr.add(3);
        arr.add(4);
        arr.add(5);
        for (int i = 0; i < arr.size(); i++) {
            System.out.println(arr.get(i));//1  2   3   4   5
        }
        ArrayList<Person> arr1=new ArrayList<>();
        arr1.add(new Person("张三", 18));
        arr1.add(new Person("李四", 18));
        arr1.add(new Person("王二", 18));
        for (int i = 0; i < arr1.size(); i++) {
            System.out.println(arr1.get(i));
        }
        /*
        Person [name=张三, age=18]
        Person [name=李四, age=18]
        Person [name=王二, age=18]*/
        System.out.println(arr1.size());//3
        arr1.clear();//清空集合
        System.out.println(arr1.size());//0
    }
}

collection接口是集合的根接口,研究它应该通过他的实现类

ArrayList集合实现了List接口,List接口继承了Collection接口,因此可以 通过ArrayList研究Collection的部分方法:

import java.util.ArrayList;
import java.util.Collection;

public class Demo3 {
    public static void main(String[] args) {
        fun1();
        fun2();
        fun3();
    }

    private static void fun3() {
        // 删除元素
        Collection<String> c=new ArrayList<>();
        c.add("abc");
        c.add("def");
        c.add("ghi");
        boolean b=c.remove("abc");
        System.out.println(b);//true,看是否删除成功,如果元素不存在,则删除失败,如果有重复元素,则删除第一个
        System.out.println(c);//[def, ghi]
    }

    private static void fun2() {
        // 得到一个存储对象的数组
        Collection<String> c=new ArrayList<>();
        c.add("abc");
        c.add("defg");
        c.add("123");
        Object[] obj=c.toArray();
        for (int i = 0; i < obj.length; i++) {
            System.out.println(obj[i]);
        /*    abc
            defg
            123*/
        }
        
    }

    private static void fun1() {
        //利用多态创建Collection类型变量
        Collection<String> c=new ArrayList<>();
        c.add("abc");//add()方法添加元素
        c.add("efg");
        boolean b=c.contains("abc");//contains方法,判断集合是否包含某元素,返回布尔类型
        System.out.println(b);//true
        System.out.println(c.size());//2//size()方法:集合的大小,存入元素个数
        c.clear();//清空集合中元素,集合本身仍然存在,就像抽屉里的东西拿走了,抽屉仍然存在
        System.out.println(c.size());//0
    }
}

迭代器:java有很多的集合,存的方式是不一样的,我们要取出这些元素,可以通过一种通用的方式获得;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo4 {
    public static void main(String[] args) {
        Collection c=new ArrayList<>();
        c.add("abc");
        c.add("jfhjkb");
        c.add(new Person("张三",18));
        //迭代器
        Iterator it=c.iterator();
        while (it.hasNext()) {
            Object  obj = (Object) it.next();
            System.out.println(obj);
        }
        
    }
}

增强性for循环:

格式:for(数据类型 变量名:数组或者集合){syso(变量名)}

还以上一个例子为例:

public class Demo4 {
    public static void main(String[] args) {
        Collection c=new ArrayList<>();
        c.add("abc");
        c.add("jfhjkb");
        c.add(new Person("张三",18));
        //增强性for循环
        for (Object object : c) {
            System.out.println(c);
        }
/*[abc, jfhjkb, Person [name=张三, age=18]]
[abc, jfhjkb, Person [name=张三, age=18]]
[abc, jfhjkb, Person [name=张三, age=18]]*/    
    }
}

 

posted @ 2019-03-20 20:30  Zs夏至  阅读(146)  评论(0编辑  收藏  举报