ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

集合的简述

2021-10-23 17:58:15  阅读:157  来源: 互联网

标签:存储 元素 List Collection 简述 接口 集合


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.集合接口

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

 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类型,所以在取出的时候,需要进行强制类型转换。

标签:存储,元素,List,Collection,简述,接口,集合
来源: https://blog.csdn.net/zy15193118020/article/details/120922407

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有