集合的简述

1.集合: 一种容器,能够存储引用数据类型的容器,长度可变!

2.集合框架图

集合的简述

从上面的集合框架图可以看到,Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

3. 集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:

  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象

  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。

  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现

4.集合框架体系

集合的简述

5.集合接口

序号 接口描述
1 Collection 接口 Collection 是最基本的集合接口,一个 Collection 代表一组 Object,即 Collection 的元素, Java不提供直接继承自Collection的类,只提供继承于的子接口(如List和set)。Collection 接口存储一组不唯一,无序的对象。
2 List 接口 List接口是一个有序的 Collection,使用此接口能够精确的控制每个元素插入的位置,能够通过索引(元素在List中位置,类似于数组的下标)来访问List中的元素,第一个元素的索引为 0,而且允许有相同的元素。List 接口存储一组不唯一,有序(插入顺序)的对象。
3 Set Set 具有与 Collection 完全一样的接口,只是行为上不同,Set 不保存重复的元素。Set 接口存储一组唯一,无序的对象。
4 SortedSet 继承于Set保存有序的集合。
5 Map Map 接口存储一组键值对象,提供key(键)到value(值)的映射。
6 Map.Entry 描述在一个Map中的一个元素(键/值对)。是一个Map的内部类。
7 SortedMap 继承于 Map,使 Key 保持在升序排列。
8 Enumeration 这是一个传统的接口和定义的方法,通过它可以枚举(一次获得一个)对象集合中的元素。这个传统接口已被迭代器取代。

 6.集合和数组的区别

        1)长度区别

               数组长度:固定

               集合长度:可变

        2)存储数据类型的区别

                数组:既可以存储基本数据类型,而且存储引用数据类型

                集合:只能存储引用数据类型

        3)存储元素的区别

                数组:虽然以存储基本数据类型,而且存储引用数据类型,元素类型必须统一

                集合:虽然只能存储引用数据类型,但是可以存储任何引用类型

7.Collection集合的高级功能

boolean addAll(Collection c):添加一个集合中的所有元素

boolean containsAll(Collection c):包含一个集合的所有元素

boolean removeAll(Collection c)删除一个集合中包含另一个集合中的某个元素,就算删除,返回true

 8.接口迭代器

Iterator<E> iterator():集合专有遍历方式

boolean hasNext() 判断是否有下一个可以迭代的元素

Object next():获取下一个可以迭代的元素

9.List接口特有功能:

void add(int index, Object element):在指定位置处添加一个新的元素

Object remove(int index):删除指定位置处的元素 

E set(int index, Object element):修改指定位置处的元素内容 

Object get(int index):获取指定位置处的元素 

ListIterator<E> listIterator():列表迭代器

10.列表迭代器

ListIterator<E> listIterator():列表迭代器

11.增强for循环

        作用:替代迭代器的Iterator,简化书写方式

        格式

 for(泛型数据类型 变量名 : 集合对象名称){ //增强for循环 遍历数组非常少,主要用在集合中 * 输出变量 
    名;  
 }

12.泛型<>

使用<引用数据类型>集合对象的创建同时明确数据类型,并且将运行时期异常提前到了编译时期

1)提高程序安全性,将运行时期异常,提前到了编译异常!
2)解决部分黄色警告线
3)避免了强转类型转换!

13.List集合遍历有几种方式,核心代码体现

List<String> list = new ArrayList<>() ;
list.add("hello") ;
list.add("JavaEE") ;
list.add("i'm coming") ;
//方式1:
Object[] objects = list.toArray() ;
for(int x = 0 ; x < objects.length; x ++){
    String s = (String)objects[x] ;
    System.out.println(s) ;
}
//方式2:Collection集合的迭代器
Iterator<String> it = list.iterator() ;
while(it.hasNext()){
    String s = it.next() ;
     System.out.println(s) ;
}
//方式3:使用List集合的特有功能
for(int x = 0 ; x< list.size() ; x++){
    String s = list.get(x) ;
    System.out.println(s) ;
}
//方式4:使用列表ListIterator遍历List集合
ListIterator<String> lit = list.listIterator() ;
while(lit.hasNext()){
    String s = lit.next() ;
     System.out.println(s) ;
}
//方式5:jdk5以后 提供一个增强for循环,替代迭代器
for(String s:list){
    System.out.println(s) ;
}

14.List三个子实现类的特点

ArrayList:底层数据结构是数组,查询快,增删慢
线程不安全,不同步,执行效率高
LinkedList:底层数据结构是链表,查询慢,增删快
线程不安全,不同步,执行效率高
Vector:底层数据结构是数组,查询快,增删慢
线程安全的类,同步,执行效率低:单线程程序中,使用ArrayList替代Vector

15.如何使用比较器

TreeSet和TreeMap的按照排序顺序来存储元素. 然而,这是通过比较器来精确定义按照什么样的排序顺序。(使用 Java Comparator 这里通过实例列出Comparator接口提供的所有方法)

16.集合总结

        1)集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。

        2)集合框架的类和接口均在java.util包中。

        3)任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。

上一篇:Python Qt GUI设计:QPrinter打印图片类(基础篇—21)


下一篇:集合了,一起出发去Java集合世界一探究竟吧!——Collection & List