欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【JavaSE_学习笔记】集合Collection接口

程序员文章站 2024-03-16 12:59:16
...

【JavaSE_学习笔记】集合Collection接口

Collection接口

目前:学习过哪些容器变量呢?
  数组,StringBuffer/StringBuilder
  对于数组来说,数组的长度是固定的,不符合实际需求(长度不可变)
  对于StringBuffer/StringBuilder来说始终在内存中返回的是字符串类型,也不满足元素类型变化的要求
面试题:集合和数组的区别?
  1)长度的区别:
    数组:长度是固定的;
    集合:长度是可变的
  2)存储数据类型的区别:
    数组:可以存储引用类型,可以存储基本数据类型
    集合:只能存储引用类型
  3)存储元素的区别:
    数组:在同一个数组中,只能存储同一种数据类型的元素
    集合:可以 存储多种数据类型的元素
  Collection: 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接实现:它提供更具体的子接口(如 Set 和 List)实现
面试题:数组中有没有length(),String类中有没有length(),集合中有没有length()?
  数组:length属性
  String:length()
  集合中:size()
集合的继承体系图:
【JavaSE_学习笔记】集合Collection接口
Collection的常用方法:
增加:
  boolean add(Object e:给集合中添加指定的元素
  boolean addAll(Collection c):添加一个集合中的所有元素
删除:
  void clear():删除一个集合中的所有元素,暴力删除,(不建议使用)
  boolean remove(Object o):删除一个集合中的指定元素
  boolean removeAll(Collection c):删除两个集合中的交集元素
判断功能:
  boolean contains(Object o):判断一个集合中是否包含指定的单个元素
  boolean containsAll(Collection c):判断一个集合中是否另一个集合;思考:是包含一个元素算是包含还是包含所有
  boolean isEmpty():判断集合是否为空,如果为空,则返回true
交集功能:
  boolean retainAll(Collection c):由于调用而发生改变则返回true,否则返回false
  A集合对B集合取交集,那么交集的元素去A集合里面了,并且返回值boolean表达的意识是A集合中的元素是否发生变化,如果发生变化,就返回true;否则,false
获取功能:
  int size():获取集合中的元素数
迭代:
  Object[] toArray():将集合转换成数组
  Iterator iterator():迭代器
举例:

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

public class Demo3 {
    public static void main(String[] args) {
        Collection c=new ArrayList();
        c.add("hello");
        c.add("world");
        Collection c2=new ArrayList();
        c2.add("hello");
        c2.add("JavaSE");
        c2.add("JavaWeb");
        System.out.println(c);//[hello, world]
        System.out.println(c.size());//2
        System.out.println(c2);//[hello, JavaSE, JavaWeb]

        /*c.addAll(c2);
        System.out.println(c);//[hello, world, hello, JavaSE, JavaWeb]
        */  

        /*boolean flag=c2.remove("JavaSE");
        System.out.println(flag+"------"+c2);//true------[hello, JavaWeb]
*/      
        /*boolean flag=c.removeAll(c2);
        System.out.println(flag+"------"+c+"-------"+c2);//true------[world]-------[hello, JavaSE, JavaWeb]
*/      
        boolean flag=c.retainAll(c2);
        System.out.println(flag+"------"+c+"-------"+c2);//true------[hello]-------[hello, JavaSE, JavaWeb]
    }
}

迭代器(Iterator)的常用方法:

  Iterator iterator():获取集合中的迭代器
   当获取到集合中的迭代器时,迭代器对象就会有一个游标指向集合中的第一个元素
  boolean hasNext():判断一个集合中是否有下一个可以迭代的元素
   即问当前游标有没有指向一个元素
  Object next():返回迭代的下一个元素
   即首先获取当前游标指向的元素,然后游标向下移动一个单位
  Object remove():移除迭代器返回的最后一个元素
举例:

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("张三");
        c.add("李四");
        c.add("王五");
        Iterator it=c.iterator();
        //遍历集合
        while(it.hasNext()){
            System.out.print(it.next());//张三李四王五
        }
        //删除集合最后一个元素
        it.remove();
        System.out.println(c);//[张三, 李四]
    }
}

注意:存储自定义对象使用迭代器遍历,it.next()不要使用多次,否则会出现异常!