Java SE学习总结 Day (17)

Day 17开篇:
      
        "
今天java基础主要学习了Collection,数组的弊端,集合的优点,集合的分类,Collection的功能,Collection的方法, Iterator的概念,List, List的特有功能等。 "




知识点反馈:

今天的知识点总结的思维导图


 

一. Collection
1. 数组的弊端:
(1)数组的长度一旦被初始化,就不可变,不利于扩展
(2)数组存储的数据类型只能是同一数据类型
(3)数组可以存储基本数据类型,基本数据类型其实违反了万物皆对象的思想
(4)数组的功能比较单一,不利于添加、删除、插入等相关操作,而且效率比较低
(5)数组存储的数据是必须有序(插入和取出是有序)的,而且可以进行重复
 
2.集合的优点:
(1)集合不存在长度概念,新的数据进来自动扩增,数据离开自动缩减(弹性伸缩)
(2)只能存储引用数据类型(完全符合面向对象思想)
(3)功能丰富,提供了增删改查的所有相关功能
(4)子类众多,可以根据不同要求,通过多态的方式 选择不同的子类实现
 
3.集合的分类:
(1)Collection(接口):
|- List(元素是有序的,元素数据可重复的):
                |- ArrayList:
                |- LinkedList:
            |- Set(元素是无序的,元素数据不可重复):
                |-TreeSet:
                |-HashSet:
 
(2) Map(双列数据,其实就是存在映射关系"key-value"):
 
4. Collection的功能:
Collection接口是List,Set和Queue接口的父接口,该接口里定义的方法可以直接提供给set和list使用但是要实现类进行重写,JDK并没有对该接口提供任何的实现方式,必须有具体的实现类进行完成。
 
5. Collection的方法:
(1)增加的功能
boolean add(Object e):添加一个元素进入集合
boolean addAll(Collection c) 将一整个集合添加到另外一个集合
(2)删除的功能
void clear() 清空所有元素
boolean remove(Object obj) 删除某一个元素
boolean        removeAll(Collection c):删除整个集合
boolean retainAll(Collection c):移除两个集合不相同的元素,保留两个集合相等元素
(3)修改的功能
con2.clear();
(4)查询的功能
int        size():查询集合的元素个数
(5)判断的功能
boolean        isEmpty():判断集合是否为空
boolean contains(Object o):判断是否存在指定元素
boolean        containsAll(Collection c):判断是是否存在另一个集合的所有元素
注意:该方法判断的其实是另外一个集合的所有元素,其原理也简单,其实就是使用equals一个一个进行对比。
(6) 转换功能
Object[] toArray();将集合转换为数组
 
6. 集合遍历:
(1)方式一:将集合转换成Object数组,然后数组进行遍历
            Object [] obj = con.toArray();
            for (int i = 0; i < obj.length; i++) {
                String s = (String)obj;
                System.out.println(s);
            }
 
(2)方式二:使用jdk5的foreach循环
             for(Object str: con){
                String s = (String) str;
                System.out.println(s);
            }
        注意:foreach底层其实还是采用的迭代器,无需转换数组,无需确定索引。
 
(3)方式三:使用Iterator
            Iterator it = con.iterator();
            while (it.hasNext()){
                System.out.println(it.next());
            }
 
7. Iterator的概念:
Iterator被称之为迭代器(设计模式一种),主要的作用是用于遍历Collection集合当中的元素
Collection其实已经继承Iterable的接口,而Iterable有有一个Iterator的方法,这个方法又实现了Iterator的接口
 
8. Iterator的方法:
(1)boolean        hasNext() 判断集合当中是否存在下一个元素
(2)Object next() 获取下一个元素的内容
(3)void remove() 移除迭代最后一个元素
 
9.链表和数组的内存走向图:
 
10.栈和对列:
 
11.集合的继承体系:
 
 
二.List
1.List的概念:
List本身也是一个接口,是一个元素存入和取出有顺序的,且元素可以重复的一个集合接口,此接口的用户可以对列表中每个元素的插入位置进行精确地控制,用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
 
2. List的特有功能:
(1) 增加:
void add(int index, Object element):根据指定索引位置插入元素
boolean addAll(int index, Collection c):根据指定索引位置,插入整个集合(这里的索引不是指元素,而是一个Collection的位置)
(2) 删除:
Object remove(int index):根据指定索引位置删除某一个元素
(3) 修改:
Object set(int index, E element):根据指定索引位置,修改元素内容
(4) 查询:
Object get(int index):根据索引位置,获得指定元素
int        indexOf(Object o):查找指定元素第一次出现的索引位置,如果不存在则返回-1
int        lastIndexOf(Object o):查找指定元素最后一次出现的索引位置,如果不存在则返回-1
List subList(int fromIndex, int toIndex):此指定索引位置开始,到指定索引位置结束,截取元素,返回一个新的list集合
 
3. List集合的新的遍历方式:
(1) 方式一:通过循环+get来配合遍历
for (int i = 0; i < list.size(); i++) {
                System.out.println(list.get(i));
            }
(2) 方式二:使用listIterator()迭代遍历
(3) ListIterator:允许程序员按任一方向遍历列表、迭代期间修改列表,并获得迭代器在列表中的当前位置
(4) boolean        hasNext():判断是否存在下一个元素
(5) Object        next():返回集合的下一个元素
(6) boolean        hasPrevious():判断是否存在上一个元素
(7) Object        previous():返回集合的上一个元素
 
4. List的子类:
(1)ArrayList:底层维护的是一个Object数组,特点:查询速度快,增删比较慢
(2)LinkedList:底层维护的是一个链表,特点:查询速度比较慢,增删速度快
(3)Vector:一个非常古老的集合,JDK1.O版本就诞生看,大部分功能和ArrayList是一致的,区别是这玩意是线程安全的。但是因为结构的问题,他的处理效率要远远低于ArrayList,一般尽量避免使用,因为即使要线程安全,我们在多线程的时候可以解决这个问题。


 

发布了29 篇原创文章 · 获赞 7 · 访问量 3165

猜你喜欢

转载自blog.csdn.net/weixin_45406656/article/details/104255024
今日推荐