博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java-List接口
阅读量:2780 次
发布时间:2019-05-13

本文共 3090 字,大约阅读时间需要 10 分钟。

一、List接口的特点

A:List接口的特点:

a:它是一个元素存取有序的集合。
例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)。
b:它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。
c:集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
d:List接口的常用子类有:

  • ArrayList集合
  • LinkedList集合

二、List接口的特有方法

A:List接口的常用方法

List接口的常用方法

B:List接口的特有方法(带索引的方法)

a:增加元素方法

 add(Object e):向集合末尾处,添加指定的元素
 add(int index, Object e) 向集合指定索引处,添加指定的元素,原有元素依次后移

/*       *  add(int index, E)       *  将元素插入到列表的指定索引上       *  带有索引的操作,防止越界问题       *  java.lang.IndexOutOfBoundsException       *     ArrayIndexOutOfBoundsException       *     StringIndexOutOfBoundsException       */      public static void function(){
List
list = new ArrayList
(); list.add("abc1"); list.add("abc2"); list.add("abc3"); list.add("abc4"); System.out.println(list); list.add(1, "itcast"); System.out.println(list); }

b:删除元素删除

 remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素
 remove(int index):将指定索引处的元素,从集合中删除,返回值为被删除的元素

/*       *  E remove(int index)       *  移除指定索引上的元素       *  返回被删除之前的元素       */      public static void function_1(){        List
list = new ArrayList
(); list.add(1.1); list.add(1.2); list.add(1.3); list.add(1.4); Double d = list.remove(0); System.out.println(d); System.out.println(list); }

c:替换元素方法

 set(int index, Object e):将指定索引处的元素,替换成指定的元素,返回值为替换前的元素

/*       *  E set(int index, E)       *  修改指定索引上的元素       *  返回被修改之前的元素       */      public static void function_2(){        List
list = new ArrayList
(); list.add(1); list.add(2); list.add(3); list.add(4); Integer i = list.set(0, 5); System.out.println(i); System.out.println(list); }

d:查询元素方法

 get(int index):获取指定索引处的元素,并返回该元素

三、迭代器的并发修改异常

A:迭代器的并发修改异常

/*      *  迭代器的并发修改异常 java.util.ConcurrentModificationException      *  就是在遍历的过程中,使用了集合方法修改了集合的长度,不允许的      */     public class ListDemo1 {
public static void main(String[] args) { List
list = new ArrayList
(); list.add("abc1"); list.add("abc2"); list.add("abc3"); list.add("abc4"); //对集合使用迭代器进行获取,获取时候判断集合中是否存在 "abc3"对象 //如果有,添加一个元素 "ABC3" Iterator
it = list.iterator(); while(it.hasNext()){ String s = it.next(); //对获取出的元素s,进行判断,是不是有"abc3" if(s.equals("abc3")){ list.add("ABC3"); } System.out.println(s); } } }
运行上述代码发生了错误 java.util.ConcurrentModificationException这是什么原因呢?   在迭代过程中,使用了集合的方法对元素进行操作。   导致迭代器并不知道集合中的变化,容易引发数据的不确定性。 并发修改异常解决办法:    在迭代时,不要使用集合的方法操作元素。    或者通过ListIterator迭代器操作元素是可以的,ListIterator的出现,解决了使用Iterator迭代过程中可能会发生的错误情况。

四、数据的存储结构

A:数据的存储结构 a:栈结构:后进先出/先进后出(手枪弹夹) FILO (first in last out) b:队列结构:先进先出/后进后出(银行排队) FIFO(first in first out) c:数组结构:           查询快:通过索引快速找到元素           增删慢:每次增删都需要开辟新的数组,将老数组中的元素拷贝到新数组中                  开辟新数组耗费资源 d:链表结构           查询慢:每次都需要从链头或者链尾找起           增删快:只需要修改元素记录的下个元素的地址值即可不需要移动大量元素
你可能感兴趣的文章
VCL已死,RAD已死(6) - 结语与预测
查看>>
CRM下午茶(五)-销售成熟度与CRM
查看>>
走出软件作坊(四十四)(四十五)(四十六)(四十七)(四十八)(四十九)
查看>>
我们仍然在路上-走出软件作坊(五十)
查看>>
Jquery1.2.6 源码分析
查看>>
FireUnit:基于Firebug的JavaScript单元测试扩展
查看>>
MySQL之Explain
查看>>
央视春晚票选《本草纲目》稳居歌舞类冠军
查看>>
利用JSF开发Web程序的三大优势
查看>>
MySQL之Handler_read_*
查看>>
09年又要死多少“第二款游戏”?
查看>>
分享.NET开发中经常用到的十大软件
查看>>
从职业人角度看外企
查看>>
把程序作为人生,把人生当作程序
查看>>
苹果公司的简单产品线为何能够成功?
查看>>
中国移动如何用Java做开发
查看>>
处理超过 2G 的 DBF 表
查看>>
22 个苹果风格的 Web 设计
查看>>
海盗湾BT网站创始人或被判处2年徒刑
查看>>
Spring创始人:看衰Java EE,Spring3.0将支持REST
查看>>