天天看点

Java--------集合1. 集合框架概述2. Collection接口3.Iterator 迭代器接口4.List 接口5.Set 接口6.Map接口7.Connections工具类

集合

  • 1. 集合框架概述
  • 2. Collection接口
    • 2.1 collection接口体系:
    • 2.2、常用方法:(API)
  • 3.Iterator 迭代器接口
    • 3.1迭代器执行原理
    • 3.2使用foreach循环遍历集合元素
  • 4.List 接口
    • 4.1 List概述
    • 4.2 源码分析
    • 4.3常用方法
  • 5.Set 接口
  • 6.Map接口
  • 7.Connections工具类

1. 集合框架概述

  • java中为了对多个对象进行操作,就需要对多个对象进行存储,针对Array的弊端,Java集合就创建一个“容器”,可以动态的把多个对象的引用放入容器中。
  • java集合类就是对多个对象进行存储的操作类,存储的类型可以是单个对象,也可以是关联对象。
  • 注意Java集合中存储的对象在内存中,如果存储在硬盘中的叫做“持久化操作”。

Java集合分为两种不同的体系:

  • Collection:单值接口操作

    List:接口:元素有序,可重复 —“动态”数组

    ArrayList、LinkedList、Vector

    Set:接口:元素无序,不可重复 — “高中集合”

    HashSet、LinkedHashSet、TreeSet

  • Map:键值操作接口、有key—value组成 — “高中函数y = f(x)”
    HashMap、LinkedHashMap、TreeMap、Hashtable、Properties

2. Collection接口

  • Collection接口不提供任何实现类,而是提供更加具体的子接口;
  • 在JDK5之前,集合会丢失容器中所放入的对象的类型,会把所有放入的对象都当成Object类型处

    理,从1.5之后增加了泛型,则Java集合可以记住容器中的对象的数据类型。

    2.1 collection接口体系:

    Java--------集合1. 集合框架概述2. Collection接口3.Iterator 迭代器接口4.List 接口5.Set 接口6.Map接口7.Connections工具类

    2.2、常用方法:(API)

    Collection接口是Set,Queue,List的父接口。Collection接口中定义了多种方法可供其子类进行实现,以实现数据操作。由于方法比较多,就偷个懒,直接把JDK文档上的内容搬过来。
    Java--------集合1. 集合框架概述2. Collection接口3.Iterator 迭代器接口4.List 接口5.Set 接口6.Map接口7.Connections工具类
    代码示例:
//通过ArrayList创建对象
Collection coll = new ArrayList();
//add(E e) //Object e:添加元素
coll.add("AA");
coll.add("BB");
coll.add(123); //自动装箱
coll.add(new Date());
//size() :获取集合中元素的个数
System.out.println(coll);
System.out.println("集合中元素个数: " + coll.size()); //4
//将coll2中的所有元素添加到指定集合中
//addAll(Collection<? extends E> c)
Collection coll2 = new ArrayList();
coll2.add(456);
coll2.add("cc");
coll.addAll(coll2);
System.out.println(coll);
System.out.println("集合中元素个数: " + coll.size()); //6
// clear() : 清空集合中的元素
coll.clear();
System.out.println(coll);
System.out.println("集合中元素个数: " + coll.size()); //0
//isEmpty():判断当前集合是否为空
System.out.println(coll.isEmpty());
           

实例代码:(contains(Object o)、containsAll(Collection<?> c))

Collection coll = new ArrayList();
coll.add(123);
coll.add(456);
coll.add(new String("Tom"));
coll.add(false);
Person p = new Person("小王", 20);
coll.add(p);
// 1、contains(Object o) : 判断当前集合中是否包含指定的元素,判断对象相等会调用对象所在类的
equals()方法
// boolean contains = coll.contains(123);
// System.out.println(contains);
// boolean contains2 = coll.contains(new String("Tom"));
// 添加p對
// System.out.println(contains2); // true
// boolean contains3 = coll.contains(p);
// System.out.println(contains3); // true
boolean contains4 = coll.contains(new Person("小王", 20));
System.out.println(contains4); // false: 调用的是父类(object的equals方法使用是==比
较)
// true : 重写父类的equals方法:属性相同就相同
//2、containsAll(Collection<?> c) :判断coll2集合中的所有元素是否在某个集合中存在
Collection coll2 = Arrays.asList(123,456);
System.out.println(coll.containsAll(coll2));
           
  • 在Collection接口中的添加object类型的对象时,要求所在的类重写equals方法
  • 集合在判断相同元素时会调用所在类的equals方法判断是否相同

3.Iterator 迭代器接口

  • Iterator接口经常被称作迭代器,它是Collection接口的父接口。但Iterator主要用于遍历集合中的元素。
  • Iterator接口中主要定义了2个方法: hasNext()方法 和 next()方法。
  • Iterator仅用于遍历集合,本身不提供承装对象的能力,如果需要创建Iterator对象,则必须有需

    要迭代的集合

  • 集合对象每次调用iterator()方法都得到一个全新的迭代器对象,默认游标都在集合的第一个元

    素之前

3.1迭代器执行原理

3.2使用foreach循环遍历集合元素

  • jdk1.5之后提供了foreach循环迭代访问Collection和数组
  • foreach底层使用的迭代器方式

4.List 接口

4.1 List概述

  • List集合有序、可重复。可看成“动态”数组,代替原来的数组

    核心实现类(重点):

ArrayList:作为List接口的主要实现类、线程不安全、效率高。底层使用Object[]数组实现存储

LinkedList:底层使用双向列表存储数据,如果频繁添加、删除、插入元素则效率较高

vector:古老的实现类、甚至出现在List接口之前,线程安全,效率低。底层使用Object[]数组实现存储

4.2 源码分析

ArrayList:

LInkList:

  • LinkedList创建对象时,内部声明了Node类型的firsts属性和last属性,默认为null
  • add()添加,将内容添加到新建的node节点中

    Vector:

4.3常用方法

增删改查

5.Set 接口

-set:存储无序的,不可重复的

6.Map接口

7.Connections工具类