集合(Collection接口)

2020-12-18  本文已影响0人  冯宏志
集合框架的概述

集合框架

Collection接口:单列集合,用来存储一个一个的对象

package com.atguigu.java;

import org.junit.Test;

import java.util.*;

public class CollectionTest {
    @Test
    public void test1(){
        Collection collection = new ArrayList();

        //add(Object e):将元素e添加到集合中
        //对象e所对应的类应该重写equals()方法
        collection.add("A");
        collection.add(123);
        collection.add(new Date());

        //size():获取添加的元素个数
        System.out.println(collection.size());//3

        //addAll(Collection collection1):将collection1集合中的元素添加到collection中
        Collection collection1 = new ArrayList();
        collection1.add("B");
        collection1.add(456);
        collection.addAll(collection1);
        System.out.println(collection);//[A, 123, Sun Nov 29 16:40:07 CST 2020, B, 456]

        //clear():清空集合元素
        collection.clear();

        //isEmpty():判断当前集合是否为空,
        System.out.println(collection.isEmpty());//true

        //contains(Object obj):判断当前集合中是否包含obj,通过equals()来判断,所以自定义类需要重写equals()
        System.out.println(collection1.contains("B"));//true

        //containsAll(Collection coll1):判断形参coll1中的所有元素是否都存在于当前集合中
        Collection coll1 = Arrays.asList(456,"B");//返回一个ArrayList
        System.out.println(collection1.containsAll(coll1));//true

        //remove(Object obj):从当前集合中移除obj元素,返回一个boolean,表示删除是否成功
        System.out.println(collection1.remove("C") );//false

        //removeAll(Collection coll3):相当于集合减法,当前集合减去和coll3的交集。
        //coll2不能用Arrays.asList的方法创建,会报UnsupportedOperationException异常
        Collection coll2 = new ArrayList();
        coll2.add(1);
        coll2.add(2);
        coll2.add(3);
        Collection coll3 = Arrays.asList(2,3,4);
        coll2.removeAll(coll3);
        System.out.println(coll2);//[1]

        //retainAll(Collection coll5):取当前集合与coll5的交集并赋给当前集合,函数返回boolean
        Collection coll4 = new ArrayList();
        coll4.add(1);
        coll4.add(2);
        coll4.add(3);
        coll4.add(4);
        Collection coll5 = Arrays.asList(2,3);
        coll4.retainAll(coll5);
        System.out.println(coll4);//[2, 3]

        //equals(Object obj):要想返回true,需要当前集合和形参集合的元素都相同
        Collection coll6 = Arrays.asList(1,2,3);
        Collection coll7 = Arrays.asList(1,2,3);
        System.out.println(coll6.equals(coll7));//true

        //hashCode():返回当前对象的哈希值
        System.out.println(coll6.hashCode());//30817

        //集合转换为数组:toArray(),返回的是一个Object类对象
        Object[] array = coll6.toArray();
        for(int i = 0;i < array.length;i++){
            System.out.println(array[i]);//1 2 3
        }

        //数组转换为集合:调用Arrays类中的静态方法asList()
        List<String> list = Arrays.asList(new String[]{"A", "B", "C"});
        System.out.println(list);//[A, B, C]

        List list1 = Arrays.asList(new int[]{1, 2, 3});
        System.out.println(list1);//[[I@75bd9247]
        System.out.println(list1.size());//1

        List list2 = Arrays.asList(new Integer[]{1, 2, 3});
        System.out.println(list2);//[1, 2, 3]
        System.out.println(list2.size());//3

        //iterator():返回Iterator接口的实例,用于遍历集合元素。放在IteratorTest.java中测试


    }
}

package com.atguigu.java;

import org.junit.Test;

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

public class IteratorTest {
    //迭代器的使用
    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add("A");
        coll.add("B");
        coll.add(false);

        //iterator():返回一个Iterator类的对象
        Iterator iterator = coll.iterator();

        System.out.println(iterator.next());//123
        System.out.println(iterator.next());//456
        System.out.println(iterator.next());//A
        System.out.println(iterator.next());//B
        System.out.println(iterator.next());//false
        System.out.println(iterator.next());//报异常:NoSuchElementException

        //为避免报异常:
        while(iterator.hasNext()){
            System.out.println(iterator.next());//123 456 A B false
        }
        //Iterator中remove()的使用
        //内部定义了remove(),可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove()
        Iterator iterator1 = coll.iterator();
        while(iterator1.hasNext()){
            Object obj = iterator1.next();
            if("A".equals(obj)){
                iterator1.remove();//删除集合中的"A"
            }
        }


    }
}
package com.atguigu.java;

import org.junit.Test;

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

public class ForTest {
    @Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add("a");
        coll.add(false);

        //for(集合元素的类型 局部变量 : 集合对象)
        //内部仍然调用了迭代器
        for(Object obj : coll){
            System.out.println(obj);
        }
    }
}



上一篇 下一篇

猜你喜欢

热点阅读