集合(二)之Collection的接口List,Set,Iterator,Map,以及泛型的掌握

这篇博客深入探讨了Java集合框架,包括Collection接口、List和Set子接口的特性与实现,如ArrayList、HashSet、TreeSet等。详细介绍了Iterator迭代器的使用以及Map接口的HashMap底层实现原理。此外,还阐述了泛型的概念及其在集合类中的应用。
摘要由CSDN通过智能技术生成

引入

  • 集合是用来装东西的,就好像一个容器.

  • 数组是一个容器

  • 数组的缺点:长度不能改变,只能存储同一种数据

  • java为什么要提供许多集合类来存储数据

    • 1.因为要求集合类的长度是可变的

    • 2.不同的数据存储,操作方式不同

    • 3.底层有数组,链表,Hash表,树来实现

                                              ArrayList底层数组实现
                                List元素可重复   LinkedList底层链表实现
                                               Vocter底层数组实现线程安全
          单列集合 Collection
                                Set元素不可重复  HashSet底层hash表实现
    集合                                        TreeSet底层红黑树实现
                        HashMap
          双列集合 Map   TreeMap
                        HashTable

一、Java集合

  • Collection接口:单列集合,存储一个一个的对象
  • List接口:有序的、可重复的数据(可理解为动态数组)
  • ArrayList、LinkedHashSet、Vector
  • Set接口:无序的、不可重复的数据(可理解为高中数学中的集合)
  • HashSet、LinkedHashSet、TreeSet
  • Map接口:双列集合,存储一对(key—value)一对的数据(可理解为函数)
  • HashMap、LinkedHashMap、TreeMap、HashTable、Properties

二、Collection接口方法

  • 查看 Collection 接口可知有 15 个抽象方法,供实现类实现,下面详解其中 13 个
  • collection接口中定义的方法,是所有集合中都会用到的方法
    集合中默认存储任意数据类型,建议使用泛型,存储同一种类型

1 boolean add(E e)	向集合中添加元素,只能添加引用类型,不能添加基本类型
    
2 boolean addAll(Collection c)	将形参集合的元素添加到当前集合
    
3 void clear()	删除当前集合所有元素
    
4 boolean comtains(Object obj)	会调用obj对象所在类的equals方法,判断形参传入集合中的值是否在当前集合内
    
5 boolean contains(Collection coll)	判断形参coll的元素是否都在当前集合内
    
6 boolean equals(Object o)	判断当前集合和形参集合元素是否相等
    
7 int hashCode()	返回当前集合的hashCode值
    
8 boolean isEmpty()		判断当前集合是否为空
   
9 boolean remove(Object obj)		从当前集合删除obj元素
    
10 boolean removeAll(Collection coll)	从当前集合删除coll集合的所有元素
    
11 boolean retainAll(Collection coll) 	求两个集合的交集,并返回给当前集合
    
12 int size()		返回当前集合的长度
    
13 Object[] toArray() 		将当前集合转换为数组

演示代码如下

Collection<String> c = new ArrayList();
        c.add("abc");
        c.add("ab");
        c.add("c");//单个增加
        //c.clear();//清空所有元素
        /*System.out.println(c.remove("a"));//删除指定元素,有则返回true,没有则返回false
        System.out.println(c.contains("a"));//集合是否包含指定元素,包含返回true,没有则返回false
        System.out.println(c.isEmpty());//判断集合是否为空*/
       /* c.removeIf(new Predicate<String>() {//有条件的删除
            @Override
            public boolean test(String s) {
                return s.startsWith("a");//删除过滤的条件
                                         //删除首字母为a的所有元素
            }
        });*/
        /*
        Predicate是一个接口,假定在这里重写可以以少建一个类
         */
        c.stream().forEach((a)->System.out.println(a));//以流的方式遍历
        //System.out.println(c);
 /*ArrayList<String> list = new ArrayList<>();
        list.add("X");
        Collections.addAll(list,"a","b","B");//添加元素
        System.out.println(list);
        Collections.sort(list);//排序
        System.out.println(list);
        System.
        out.println(Collections.binarySearch(list,"B"));//查找*/
        ArrayList<String> list1 = new ArrayList<>();
        list1.add("X");
        Collections.addAll(list1, "a", "b", "C");
        ArrayList<String> list2 = new ArrayList<>();
        list2.add("x");
        list2.add("y");
        list2.add("z");
        Collections.copy(list1, list2);//替换,且list1的size必须大于list2
        System.out.println(list1);
        //Collections.fill(list1,"x");//指定元素替代指定列表中的所有元素
        System.out.println(Collections.max(list1));//比较并指定列表中最大值元素
        //Collections.replaceAll(list1,"y","B");//将所有y换成B
        Collections.reverse(list1);//反转
        System<
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值