美文网首页
集合(Collection接口)

集合(Collection接口)

作者: 冯宏志 | 来源:发表于2020-12-18 15:05 被阅读0次
集合框架的概述
  • 集合、数组都是对多个数据进行存储操作的,简称java容器
    说明:此时的存储,主要指的是内存层面的存储,不涉及持久化的存储(.txt,.jpg,.avi,数据库中)
  • 数组在存储数据方面的特点:
    1、一旦初始化之后,长度就确定了
    2、一旦定义好,其元素的类型也就确定了,我们也就只能操作指定类型的数据了。比如:String[] arrint[] arr1Object[] arr2
    缺点:
    1、一旦初始化以后,其长度就无法修改
    2、数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便,同时效率也不高
    3、获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用
    4、数组存储数据的特点:有序、可重复。对于无序,不可重复的需求,无法满足

集合框架

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

  • 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"
            }
        }


    }
}
  • jdk5.0新特性:foreach循环遍历集合或项目
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);
        }
    }
}



相关文章

  • Java核心技术(卷I) 19、集合

    1、集合框架 接口与实现分离 Collection接口 集合类的基本接口是Collection接口 add向集合中...

  • 哪些类继承了Collection接口

    Collection集合的基本结构: 1、Collection接口 Collection是最基本集合接口,它定义了...

  • Java 集合框架分析

    Java 集合框架 包括Collection接口 和Map 接口 Collection集合 Set List Qu...

  • JJJJJava集合

    集合与数组的区别 Collection集合的方法 常用集合的分类 Collection 接口的接口 对象的集合(单...

  • Android面试中Java常考的

    常见集合类 Collection接口和Map接口是所有集合框架的父接口Collection接口包括List和Set...

  • Android中的集合数据结构

    集合框架结构图 集合和数组的区别 Collection集合的方法 常用集合的分类 Collection 接口的接口...

  • java集合

    java中常见的集合都是实现的Collection接口和Map接口 Collection集合(图示只表示了接口的实...

  • Java集合笔记

    Collection Collection:Collection接口是集合类的根接口,它有两个接口,List是一个...

  • Java集合类框架

    一、集合与Map 接口说明 1. Collection接口Collection是最基本的集合接口,一个Collec...

  • java集合类

    java集合提供两大接口衍生:Collection和Map接口 1.Collection接口包含一批对象的集合; ...

网友评论

      本文标题:集合(Collection接口)

      本文链接:https://www.haomeiwen.com/subject/fokkwktx.html