集合框架的概述

  • 1、集合、数组都是对多个数据进行存储操作的结构,简称Java容器
  • 说明:此时的存储主要指的是内存层面的存储,不涉及到持久化的存储
  • 2、数组在数据存储方面的缺点:
  • 一旦初始化以后,其长度就不可修改;

  • 数组中提供的方法非常有限,对于添加、删除、插入数据等操作,非常不便且效率不高;

  • 获取数组中实际元素的个数的需求,数组没有现成的属性或方法可用(.length只是获取数组的长度);

  • 数组存储数据的特点:有序、可重复。对于无序、不可重复的需求,不能满足。

集合框架

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

-------->List接口:存储有序的、可重复的数据;
  • ArrayList、LinkedList、Vector
-------->Set接口:存储无序的、不可重复的数据;
  • HashSet、LinkedHashSet、TreeSet

Map接口:双列集合,用来存储一对(key-value)一对数据

  • HashMap、LinkedHashMap、TreeMap、Hashtable、Properties

Collection接口的方法

向Collection接口的实现类的对象中添加数据obj时,要求obj所在类要重写equals()方法

  • contains(Object obj):判断当前集合中是否包含obj
  • 在判断时会调用obj对象所在类的equals(),有些类如string的自动重写过,一般obj所在的类需要重写equals方法
  • containsAll(Collection coll):判断形参coll中所有元素都在当前集合中
  • remove(Object obj):从当前集合中移除obj元素
  • removeAll(Collection coll):从当前集合中移除coll中所有的元素
  • retainAll(Collection coll):交集。获取当前集合和coll集合的交集,并将交集返回给当前集合
  • equals(Object obj):要想返回true,需要当前集合与形参集合的元素都相同(具体还要看集合的类型,如果是ArrayList,则必须有序相同)
  • hashCode():返回当前对象的哈希值
  • toArray():集合----->数组
@Test
    public void test1(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);

        Object[] arr = coll.toArray();
        for(int i = 0;i < arr.length;i++){
            System.out.println(arr[i]);

        }
    }
  • 拓展:数组------>集合 调用Arrays的静态方法asList()
@Test
    public void test2(){
        String[] s = new String[]{"AA", "BB", "CC"};
        List<String> list = Arrays.asList(s);
        System.out.println(list);//[AA, BB, CC]

        List<Integer> l1 = Arrays.asList(new Integer[]{123, 456});
        System.out.println(l1.size());//2

        List<int[]> l2 = Arrays.asList(new int[]{123, 456});
        System.out.println(l2.size());//1

    }

注意这里()内要是包装类,不然会被当成一个整体的对象

  • iterator():返回iterator接口的实例,用于遍历集合元素 使用迭代器Iterator接口
  • 1、内部的方法:hasNext()和Next()
  • 2、集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在第一个元素之前
  • 3、内部定义了remove(),可以在遍历的时候,删除集合中的元素,此方法不同于集合直接调用remove()
@Test
    public void test3(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(true);

        Iterator iterator = coll.iterator();

        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
    }
  • jdk5.0 新增了foreasch循环,用于遍历集合、数组
@Test
    public void test(){
        Collection coll = new ArrayList();
        coll.add(123);
        coll.add(456);
        coll.add(new String("Tom"));
        coll.add(true);

        for(Object obj : coll){//这里是将coll的每个元素赋值给obj,然后再输出obj
            System.out.println(obj);
        }

    }

版权声明:本文为weixin_45726520原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。