集合

集合的框架介绍

collection接口

定义的是所有单列集合中共性的方法
所有的单列集合都可以使用共性的方法
没有带索引的方法

list接口

1、有序的集合
2、运行存储重复元素
3、元素有索引,可以使用普通的for循环遍历

vector集合
ArrayList集合
LinkedList集合

set接口

1、不允许存储重复的元素
2、没有索引,不能使用普通的for循环遍历。

1、TreeSet集合(无序)
2、HashSet集合(无序)
2.1、LinkedHashSet集合(有序)


collection常用功能

public boolean add(E e):添加对象
public void clear():清空集合
public boolean remove(E e):删除给定的对象
public boolean contains(E e):判断对象是否存在
public boolean isEmpty():判断集合是否空
public int size():集合元素个数
public object[] toArray():把集合中的元素,存储到数组中

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

public class CollectionExercise {
    public static void main(String[] args) {
        // demoOne();
        // demoTwo();
        demoThree();
    }

    private static void demoThree() {
        Collection<String> collection = new ArrayList<String>();
        // System.out.println(collection);
        collection.add("盖伦");
        collection.add("亚索");
        Object[] array = collection.toArray();
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }

    private static void demoTwo() {
        Collection<String> collection = new ArrayList<String>();
        System.out.println(collection);
        collection.add("剑圣");
        System.out.println(collection.remove("不存在"));
        System.out.println(collection);
        System.out.println(collection.remove("剑圣"));
        System.out.println(collection);
    }

    private static void demoOne() {
        // 创建集合对象,可以使用多态
        Collection<String> collection = new ArrayList<String>();
        System.out.println(collection); // 重写toString()方法
        collection.add("盖伦");
        collection.add("亚索");
        System.out.println(collection);

    }
}

关键理解:Collection collection = new ArrayList()


Iterator迭代器

Iterator接口

在取元素之前先判断集合中有没有元素,如果有,就把这个元素取出,继续判断,直到把集合中的所有元素全部取出。

1、boolean hasNext():判断集合有没有下一个元素
2、E next():返回迭代的下一个元素,取出集合中的下一个元素

Collection接口中有一个方法iterator()返回的就是迭代器的实现类对象。

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

public class DemoOne {
    public static void main(String[] args) {
        demoOne();
    }

    private static void demoOne() {
        Collection<String> collection = new HashSet<>();
        // Collection<String> collectionOne = new ArrayList<>();
        collection.add("锐雯");
        collection.add("亚索");
        collection.add("盖伦");
        collection.add("剑圣");
        collection.add("剑魔");
        collection.add("剑魔");
        // iterator接口也有泛型,和集合的泛型相同
        // 多态
        Iterator<String> integer = collection.iterator();

//        for(Iterator<String> iterator = collection.iterator();integer.hasNext();){
//            // String s = integer.next();
//            System.out.println(integer.next());
//        }

        while (integer.hasNext()){
            // String s = integer.next();
            System.out.println(integer.next());
        }
    }
}

注意理解:Iterator integer = collection.iterator()


for each循环

专门用来遍历数组和集合的,它的内部原理其实就是Iterator迭代器,在遍历的过程中,不能对集合中的元素进行增删操作。
foreach循环必须有被遍历的目标,目标只能是collection或者数组。

写在前面:
public interface Collection extends Iterable
public interface Iterable实现这个接口运行对象成为“foreach”

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

public class ForEachExercise {
    public static void main(String[] args) {
        demoOne();
        demoTwo();
    }

    private static void demoTwo() {
        Collection<String> collection = new HashSet<>();
        collection.add("锐雯");
        collection.add("亚索");
        collection.add("盖伦");
        collection.add("剑圣");
        collection.add("剑魔");
        collection.add("剑魔");
        for (String s:collection) {
            System.out.println(s);
        }
    }

    private static void demoOne() {
        int [] array = {1,2,3,4,5};
        for (int i:array){
            System.out.println(i);
        }
    }
}
posted @ 2020-03-09 00:02  吃掉这颗薄荷糖  阅读(129)  评论(0)    收藏  举报