JAVA基础11_集合_List集合_迭代器_增强for_常见数据结构

本文详细介绍了Java集合框架中的Collection接口和ArrayList类,包括其创建、成员方法、遍历(迭代器和增强for循环)、并发修改问题及Stack/Queue数据结构。重点讲解了List的特点及其ListIterator的独特用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.f;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;

public class Test_Collection {
    /**
     * 集合出现的意义:
     *          面向对象,要对对象进行存储。对象不能是一个基础的变量,需要用容器存储。
     *
     *          学过的容器:StringBuilder,数组
     *          StringBuilder结果是字符串,数组的长度是固定的,不能作为对象的容器。
     *
     *          引出集合Collection:
     *
     * Collection的特点:
     *          集合层次结构中的根界面 。 集合表示一组被称为其元素的对象。
     *          一些集合允许重复元素,而其他集合不允许。 有些被命令和其他无序。
     *          JDK不提供此接口的任何直接实现:它提供了更具体的子接口的实现,如Set和List 。 该界面通常用于传递集合,并在需要最大的通用性的情况下对其进行操作。
     *
     *          ArrayList的构造方法
     *          A:ArrayList()
     *          构造一个初始容量为十的空列表。
     *          B:ArrayList(Collection<? extends E> c);   <E>泛型,放引用对象即可生命此集合之后会放哪种对象
     *          构造一个包含指定集合的元素的列表,按照它们由集合的迭代器返回的顺序。
     *          C:ArrayList(int initialCapacity)
     *
     *          集合的成员方法:
     *              a.add(<E>);  添加元素,源码永远返回true
     *              c.remove(<E>); 移除成功返回true,失败false
     *              c.clear(); 清空集合
     *              c.isEmpty();判断集合是否为空
     *              c.size();集合元素的个数
     *
     *          集合元素的遍历:
     *              Iterator:迭代器
     *              创建方法:
     *                  Iterator<String> i = c.iterator();  Iterator是一个接口,说明这个使用子类创建父类引用,多态的创建方式。
     *              方法:
     *                  hasNext();判断是否有下个元素
     *                  next();获取下一个元素
     *
     *          List集合的特点:有序,可重复  又被称为序列。
     *
     *          List集合的特有成员方法:
     *              add(int index, E element);在指定位置添加元素,后面的元素后移
     *              add(int index);删除指定位置元素
     *              get(int index);获取指定位置元素
     *              set(int index,E element);修改指定位置元素
     *
     *          List的便利:
     *              A:迭代器Iterator迭代器便利
     *              B:for循环便利
     *
     *          列表迭代器ListIterator<>
     *              继承于普通迭代器。
     *              特有方法有:反向遍历,Previous,hasPrevious;反向遍历的前提是要先正向遍历一便(所以一般用不到)
     *
     *           集合中并发修改的异常:
     *              产生原因:迭代器依赖于集合存在,当在迭代的时候往集合里添加元素,迭代器并不知道就会报这个错误。
     *              解决方法:
     *                  A:迭代器遍历的时候用迭代器的方法去修改元素。(迭代器的添加是添加在刚才迭代的元素后面的)
     *                  B:集合遍历的时候用集合方法去修改元素。
     *
     *
     *           增强for循环:
     *              for(元素数据类型 变量名:数组或者Collection集合){
     *
     *              }
     *
     *              目的:代替迭代器的(验证,在增强for里对集合进行修改,也会报集合并发修改异常)
     *              好处:书写方便,简化遍历代码
     *              弊端:当数组或者Collection对象为null的时候会报空指针异常。在使用之前要对集合进行空判断。
     */
    public static void main(String[] args) {
//        Collection<String> c = new ArrayList<String>();//完整的创建一个Stirng类型的集合,建议使用这种完整的写法
        //JDK1.7特性  Collection<String> c = new ArrayList();与上面意思一致

//        c.add("a");
//        c.add("b");
//        c.add("cde");

//        c.remove("a");//true
//        c.remove("hha");//false
//
//        c.clear();
//
//        c.isEmpty();
//        c.size();

//        Iterator<String> i = c.iterator();
//        i.hasNext();
//        i.next();
//        while (i.hasNext()){
//            System.out.println(i.next());
//        }
//
//        System.out.println(c);//重写了to_String方法

        List<String> l = new ArrayList<String>();
        l.add("hello");
        l.add("world");
        l.add("java");
        for (int i = 0;i<l.size();i++){
            System.out.println(l.get(i));
        }
    }
}

package com.f;

public class Test_sjjg {
    /**
     * 常见的数据结构:
     *      栈,队列,数组,链表
     *
     * List集合特点:
     *      ArrarList:底层是数组,查询快,增删慢
     *      LinkList:底层是链表,查询慢,增删快
     *
     *      ArraryList遍历:
     *          普通for
     *          迭代器
     *          增强for
     */
}

迭代器便利过程,和集合的使用步骤

 

栈,队列的数据结构

 

数组和链表数据结构

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值