Java学习第三天

Java中的集合类Collection类

集合类

数组和集合的区别

(1)数组的特点:

  • a.数组本质上就是一段连续的内存空间,可以记录多个类型相同的数据;

  • b.数组支持下标访问,可以实现随机访问;

  • c.数组一旦定义则内存空间的大小固定,无法增大或变小;

  • d.插入和删除元素时,可能会移动大量的元素,因此效率比较低;

  • e.数组的元素类型可以是基本数据类型,也可以是引用数据类型;

(2)集合的特点

  • a.集合的内存空间可连续可不连续,数据类型可相同可不相同;

  • b.集合部分支持部分不支持下标访问;

  • c.集合的内存空间不会固定,随时可以动态调整;

  • d.集合中增删元素可以不移动大量元素;

  • e.集合中的元素类型必须是引用数据类型;(八种包装类处理八种基本数据类型)

基本概念

集合类主要指用于描述集合的相关类和接口,顶层集合分别是:Collection接口和Map接口

其中java.util.Collection集合操作元素的基本单位是:单个元素;(一个元素一个元素的放)

其中java.util.Map集合操作元素的基本单位是:单对元素;(一对一对的元素放)

在以后的开发中Collection接口本身很少使用,更多的使用该接口的子接口:List接口、Queue接口以及Set接口。

Collection集合的常用方法

boolean add(E e)

用于将参数指定的元素e放入当前集合,成功返回true,否则false;

boolean addAll(Collection<?extends E> c)

用于将参数指定的集合 c 中所有的元素放入当前集合中

boolean contains(Object o)

用于判断当前集合中是否包含参数指定的对象o;

boolean containsAll(contains<?> o)

用于判断是否包含参数指定集合的所有元素;

boolean remove(Object o)

用于才能够当前集合中删除参数指定的单个元素;

boolean removeAll(Collection<?> c)

用于从当前集合中删除参数指定的所有元素;

void clear()

用于删除当前集合的所有元素;

boolean isEmpty()

用于判断当前集合是否为空,空返回true;

int size()

用于获取集合中元素的个数;

boolean retainAll(Collection<?> c)

用于计算当前集合与参数集合的交集,并放入当前集合中; 当前集合中的元素发生改变则返回true,否则返回false;

package xdl.day14;

import java.util.*;

public class TestCollection {

    public static void main(String[] args) {
        // Collection c1 = new Collection(); 接口不能实例化对象
        // 接口类型的引用指向实现类的对象,形成了多态
        Collection<Object> c1 = new ArrayList<Object>();

        // 在编译阶段应该调用Collection自己的toString(),在运行阶段调用ArrayList()的toString()
        // toString()方法的打印格式为:[元素1, 元素2, 。。。。。]
        System.out.println("c1 = " + c1); // 自动调用toString方法
        System.out.println("——————————————————————————————————————————");

        // 实现向集合c1中增加单个元素
        boolean b1 = c1.add(new Integer(1));
        System.out.println("b1 = " + b1);// true
        System.out.println("c1 = " + c1);// c1 = [1]
        b1 = c1.add(new String("two"));
        System.out.println("b1 = " + b1);// true
        System.out.println("c1 = " + c1);// c1 = [1,two]
        // 需要一个student.java
        b1 = c1.add(new Student(1001, "student", 30));
        System.out.println("b1 = " + b1);// true
        // 打印集合的本质就是打印集合中的每个元素
        // 打印每个元素的本质就是调用每个元素自己的toString()方法
        System.out.println("c1 = " + c1);

        System.out.println("——————————————————————————————————————————");

        // 实现向集合中添加另外一个集合的所有元素
        // 准备另外一个集合
        @SuppressWarnings("rawtypes")
        Collection<Comparable> c2 = new ArrayList<Comparable>();
        c2.add(new Integer(3));
        c2.add(new String("four"));

        b1 = c1.addAll(c2);
        // b1 = c1.add(c2);
        System.out.println("c1 = " + c1);

        Collection<Object> c4 = new ArrayList<Object>(c1);

        System.out.println("——————————————————————————————————————————");

        // 判断当前集合中是否包含参数指定的单个元素
        // ( o == null ? e == null : o.equals(e) )
        // 当contains()方法的形参为空时,只需要判断当前集合中是否有元素为空即可
        // 当contains()方法的形参不为空时,就需要参数对象调用equals()方法与集合元素比较
        // 因为在student中没有重写equals方法,所以调用的是object中的equals方法,判断的是地址是否相等
        b1 = c1.contains(new Integer(2));
        System.out.println(b1);
        b1 = c1.contains(new String("two"));
        System.out.println(b1);
        b1 = c1.contains(new Student(1001, "zhangfei", 30));
        System.out.println(b1);

        // 判断当前集合中是否包含参数指定的所有元素
        b1 = c1.containsAll(c2);
        System.out.println(b1);// true
        // 因为在上面c2已经被拆分成3,four两个元素,而不再是[3,four]的形式,所以使用contains整体做判断的时候返回false
        b1 = c1.contains(c2);
        System.out.println(b1);

        System.out.println("——————————————————————————————————————————");
        System.out.println("原装c1 = " + c1);
        Collection<Object> c3 = new ArrayList<Object>(c1);
        // 实现单个元素的删除
        b1 = c1.remove(new Integer(1));
        System.out.println("b1 = " + b1);
        System.out.println("c1 = " + c1);
        b1 = c1.remove(new String("two"));
        System.out.println("b1 = " + b1);
        System.out.println("c1 = " + c1);
        b1 = c1.remove(new Student(1001, "zhangfei", 30));
        System.out.println("b1 = " + b1);
        System.out.println("c1 = " + c1);
        // 实现集合中多个元素的删除操作
        c1 = c3;
        b1 = c1.removeAll(c2);
        System.out.println("b1 = " + b1);
        System.out.println("c1 = " + c1);

        // 实现集合中元素的清空
        c1.clear();
        System.out.println("c1 = " + c1);

        System.out.println("——————————————————————————————————————————");

        c1 = c4;
        System.out.println(c1);
        // 判断集合是否为空以及返回元素个数
        System.out.println(c1.isEmpty() ? "什么都没有" : "元素不为空");
        System.out.println("元素的个数是:" + c1.size());
        // 计算两个集合的交集并返回结果
        b1 = c1.retainAll(c2);
        System.out.println("b1=" + b1);
        System.out.println("c1=" + c1);
    }

}
Copyright © cnkj.site 2021 all right reserved,powered by Gitbook该文件修订时间: 2021-06-01 10:18:49

results matching ""

    No results matching ""