Collection

时间:2024-4-10    作者:老大夫    分类: JAVA


java.util.Collection:存储一个一个的数据

子接口

  1. List:有序的、可以重复的数据(相当于“动态”数组)
    具体实现类: ArrayList(主要实现类,底层还是数组)、LinkedListVector

  2. Set:存储无序的、不可重复的数据(不可重复)
    具体实现类:HashSet(主要实现类)、LinkedHashSetTreeSet
    Set底层就是Map,所以名字都一样

Collection接口及方法

添加

方法 作用
add(E obj) 添加元素对象到当前集合中
addAll(Collection other) 添加other集合中的所有元素对象到当前集合中,注意:add和addAll的区别
public class CollectionTest {
    public static void main(String[] args) {
        Collection coll=new ArrayList();

        //add方法
        coll.add("AA");
        coll.add(123);    //不能存基本数据类型,123被自动装箱为Integer了
        coll.add(new Product("手机",1299));
        System.out.println(coll);

        //addAll方法,添加入一个Collection集合
        Collection coll2=new ArrayList();
        coll.add("BB");
        coll.add(456);    //不能存基本数据类型,123被自动装箱为Integer了
        coll.add(new Product("电脑",4999));
        //使用addAll是将集合的元素分别加入,add是将集合看作一个元素加入
        coll.add(coll2);
        coll.addAll(coll2);
        System.out.println(coll);

        //size方法 ,打印出来元素个数
        System.out.println(coll.size());
    }
}

判断

方法 作用
(3)int size() 获取当前集合中实际存储的元素个数
(4)boolean isEmpty() 判断当前集合是否为空集合
(5)boolean contains(Object obj) 判断当前集合中是否存在一个与obj对象equals返回true的元素
(6)boolean containsAll(Collection coll) 判断coll集合中的元素是否在当前集合中都存在。即coll集合是否是当前集合的“子集”
(7)boolean equals(Object obj) 判断当前集合与obj是否相等
public class CollectionTest {
    public static void main(String[] args) {
        Collection coll=new ArrayList();

        //contains方法
        coll.add("AA");
        coll.add(123);
        coll.add(new Product("手机",1499));

        System.out.println(coll.contains(123));//true 因为比较的不是对象地址,是比较的内容equals
        System.out.println(coll.contains(new Product("手机",1499)));//false 对象比较的是地址,需要重写equals比较内容

    }
}

删除

方法 作用
(8)void clear() :清空集合元素
(9) boolean remove(Object obj) 从当前集合中删除第一个找到的与obj对象equals返回true的元素。
(10)boolean removeAll(Collection coll) 从当前集合中删除所有与coll集合中相同的元素。即this = this - this ∩ coll
(11)boolean retainAll(Collection coll) 从当前集合中删除两个集合中不同的元素,使得当前集合仅保留与coll集合中的元素相同的元素,即当前集合中仅保留两个集合的交集,即this = this ∩ coll;
public class CollectionTest {
    public static void main(String[] args) {
        Collection coll=new ArrayList();

        //clear方法
        coll.add("AA");
        coll.add("AA");
        coll.add(123);
        coll.add(new Product("手机",1499));

        //coll.clear();

        //remove删除第一个遇到相符合的对象
        coll.remove(new Product("手机",1499));

        //removeAll 从当前集合中删除一个集合
        Collection coll2=new ArrayList();
        coll2.add("AA");
        coll2.add("AA");
        coll.removeAll(coll2);
        System.out.println(coll);

    }
}

其他

方法 作用
(12)Object[] toArray() 返回包含当前集合中所有元素的数组
(13)hashCode() 获取集合对象的哈希值
(14)iterator() 返回迭代器对象,用于集合遍历
public class CollectionTest {
    public static void main(String[] args) {
        Collection coll=new ArrayList();

        //toArray 由集合转换为数组
        coll.add("AA");
        coll.add("AA");
        coll.add(123);
        coll.add(new Product("手机",1499));

        Object[] array = coll.toArray();
        System.out.println(Arrays.toString(array));
    }
}

总结

Collection有14个常用方法

相互转换:
集合----》数组 toArray()
数组----》集合 Arrays的静态方法asList()

向Collection添加元素的要求:
一定要重写equals()方法

迭代器

  1. 迭代器的作用?
    用来遍历集合元素的

  2. 如何获取Iterator对象?

//获取迭代器对象
        Iterator iterator = coll.iterator();
  1. 如何遍历集合?
public class IteratorTest {
    public static void main(String[] args) {
        Collection coll=new ArrayList();

        coll.add("AA");
        coll.add("AA");
        coll.add(123);
        coll.add(new Product("手机",1499));

        //遍历方式一:
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next());
//        System.out.println(iterator.next()); //如果超出元素个数会报错

        //遍历方式二
//        for (int i = 0; i <coll.size() ; i++) {
//            System.out.println(iterator.next()); //指针下移  然后 返回对象
//        }

        //遍历方式三
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }

    }
}

增强for循环 foreach的使用 (jdk5.0新特性)

作用

用来遍历数组、集合

格式

for(元素的数据类型 局部变量 : Collection集合或数组){ 
    //操作局部变量的输出操作
}
//这里局部变量就是一个临时变量,自己命名就可以

说明

针对集合来讲,底层使用的还是迭代器
增强for循环是将集合、数组中的元素赋值给临时变量,循环体中对临时变量的修改,可能不会修改原有的元素

版权所有:伸手党盘
文章标题:Collection
文章链接:https://ssdpan.cn/?post=380
本站文章来源于网络搜集和原创,仅供学习使用,未经授权请勿用于任何商业用途,如有侵权及时联系删除

推荐阅读:


扫描二维码,在手机上阅读