栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA高级特性(二)——List集合

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA高级特性(二)——List集合

一、List集合

 1.1 List 概述

     ** List 是一个有序集合(也称为序列),用户可以精确控制列表中每个元素插入的位置,用户可以通过整数索引访问元素,并搜索列表中的元素

      ** 与Set集合不同,列表通常允许重复的元素

1.2 List 集合的特点

      ** 有序:存储和取出的元素顺利一致;

      ** 可重复:存储的元素可以重复;

1.3  List 集合的特有方法

方法含义
void  add(int idexe,E  element) 在此集合中的指定位置插入指定的元素
E remove  (int   index)删除指定索引处的元素,返回被删除的元素
E  set(int   index,  E  element)修改指定索引处的元素,返回被修改的元素
E   get(int  index, E  element)返回索引处的值

1.4 并发修改异常,使用List类中的add会产生的异常

    异常代码:ConcurrentModificantionExcetion;

    产生原因:迭代器遍历的过程中,通过集合的对象修改了集合的元素的长度,造成了迭代器获取元素中判断预期修改值和实际修改值不一致。

     解决方案,采用for循环遍历

    报错案例

public class aa {
        public static void main(String[] args) {
            Collection arr = new ArrayList();  //利用多态的方式创建对象arr
            arr.add("a1");
            arr.add("a2");
            arr.add("a3"); //add添加三个元素
            Iterator iterator = arr.iterator();  //创建迭代器
            while (iterator.hasNext()) {        //判断下一个元素是否为null
               arr.add("dk");  //出错代码ConcurrentModificationException
                System.out.println(iterator.next());
                //输出下一个元素
            }
            for (String s : arr) {
                System.out.println(s);
            }}

}

报错:ConcurrentModificationException

解决方式

public class aa {
        public static void main(String[] args) {
            List arr = new ArrayList();  //利用多态的方式创建对象arr
            arr.add("a1");
            arr.add("a2");
            arr.add("a3"); //add添加三个元素
            for (int i = 0; i < arr.size(); i++) {
                System.out.println( arr.get(i));
            }}

}

2.5 ListIterator 迭代器

     ListIterator列表迭代器

方法含义
E   next();返回迭代中下一个元素
boolean hadNext();如果迭代具有更多元素,则返回true
E   prevoius();返回列表中的上一个元素
boolean   hasPrevious();向相反方向遍历,检测是否有更多的元素
void add(E  e);将指定的元素插入列表

注:这里的add和上面迭代器iterator中使用的add不同,这里使用ListIterator,的运算,将实际修改值在修改后又重新赋值给了判断预期修改值,两者都可以在指定位置插入元素。

2.6  增强for 循环     

         增强for:简化数组和Collection集合的遍历

         **实现 Iterable 接口的类允许其对象成为增强for语句的目标

         **它是JDK5之后出现的,其内部原理是一个Iterater迭代器。

         增强for的格式

                格式: for(元素数据类型 变量名:数组或者Colection集合)

                           {//在此处使用变量即可,该变量就是元素}

          例如: list.for

                      for(String s: list){sout (s);} // 输出list里面的元素

 二、ArrayList

     2.1 ArrayList集合概述

              ——提供一种存储空间可变的存储模型,存储的容量可以发生改变

             ——是通过数组的形式存储元素的,即查询速度块,增删速度慢

                    ArrayList:

                                  可调整大小的数组实现

                                 是一种特殊的数据类型,泛型;

         注:出现E的地方我们使用引用数据类型替换即可

2.2  创建对象:

ArrayList sc=new ArrayList<>();

      sc.add("add");//表示添加第一个元素add

      sc.add("qqq")//表示添加第二个元素qqq

      sc.add("rrrr")//表示添加第三个元素rrr

      sc.add(1,"pppp")//表示在索引1处添加元素pppp,原有的元素依次往后移动

      System.out.print(sc); 输出的是 [add,pppp,qqq,rrr]

2.3 基本方法

方法含义
add增加元素
remove删除元素
set(index, 元素)指定位置修改元素
get(index )得到指定位置的元素
size()集合长度
indexof()找指定元素的索引

三、linkedList 集合

3.1 概述 

     linkedList集合是通过链表的结构进行储存的,即查询速度慢,增删块

3.2  基本方法

方法含义
addFirst(E   e);在列表开头位置插入指定的元素
addLast(E  e)在列表末尾位置插入指定的元素
getFirst()得到首尾的元素
getLast()得到最后一位元素
removeFirst()删除首尾元素
removeLast()删除末尾元素

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/434713.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号