java集合之List
来源:互联网 发布:新闻类网站 数据库 编辑:程序博客网 时间:2024/05/22 12:57
集合:是一个容器,用来存储数据。
数据库:可掉电的,可以永久存储数据
数组:也可以存储数据
接口:Collection --- 子接口:List和Set
List:保证顺序,可根据索引获取元素,可重复。
Set: 不保证顺序,不可重复。
接口List的实现类:ArrayList,LinkedList,Vector
接口Set的实现类:HashSet,TreeSet
Coolection:单列集合
List:元素有序,可以重复
Set:元素无序,不可以重复
集合的使用:
1.创建集合
2.操作集合 -- 增删改查
ArrayList集合:
1.实现了List接口
2.底层存储是以数组存储的,数组长度可变 -- 查询快,增删慢
3.可以存储null值,并可重复
4.取出顺序与添加顺序一致
5.不是同步的
增删改查方法
集合的遍历方法:
1.高级for循环
2.使用迭代器, 模板代码:(迭代器是一种设计模式)
//1.获取迭代器
Iterator it = list.iterator();
//2.遍历迭代器
while(it.hasNext()){
//取出元素
System.out.println(it.next()+" | ");
}
LinkedList集合:(在set集合中可以使用的方法在LinkedList中全都可以使用)
1.实现了List接口
2.存储结构是链表 --- 增删快,查询慢
3.也可重复存储null值
4.输出顺序与存储顺序一致
5.可作为堆栈(先进后出),队列(先进先出),双端队列(一边进两边出)
6.不是同步的
ArrayList和LinkedList的区别:在LinkedList中提供了一些列方法用来模拟堆栈,队列,双端队列,
而这些方法在ArrayList中没有提供。
例如使用LinkedList集合来模拟堆栈:
1.使用add方法为集合添加完元素之后
2.调用该集合特有的pollLast()方法来操作集合中的元素,该方法表示获取并移除集合中的最后一个元素。
模拟队列:使用pollFirst()方法。
模拟双端队列:同时使用pollFirst()和pollLast()方法。
--------------------------------------------------------------------
ArrayList和LinkedList的比较:
共同点:
1.数据存储基于索引,表现为都可以通过调用get(index)方法获取指定索引位置的元素。
2.都不是同步的,即多线程时存在安全隐患
3.取出的顺序和存入的顺序一致
4.对集合进行增删改查时调用的方法基本是一样的
不同点:
1.数据的存储结构不同,ArrayList是数组存储,LinkedList是链表存储
2.LinkedList可以用来模拟堆栈,队列,以及双端队列,主要是因为LinkedList比ArrayList多提供了这些模拟的方法。
3.构造方法上的不同,ArrayList在创建时可以指定底层数组的长度,例如下:
List list = new ArrayList(100);//指定数组长度为100
List list = new ArrayList();//如果不指明,通过查看源码发现默认长度为10
---------------------------------------------------------------------------------------
扩展:
1.ArrayList集合的底层实现是数组,数组长度一经创建是不可变的,但是ArrayList的数组长度是可变的,
当元素添加到要超出数组的长度时,就会重新生成一个新数组,将原数组的数据放进来,再将新数据放进新数组,
此时元素组就会被系统回收,新数组的长度是原来的1.5倍长,每次新生成数组都是原来的1.5倍长,
即ArrayList集合数组的可变是通过生成新数组来实现的。
2.LinkedList底层存储是链表,LinkedList集合中每一个元素都被封装为了一个Node对象(查看源码发现这个对象是使
用内部类Node来实现的),并且每个Node对象分别持有上一个和下一个对象的引用,对象与对象之间就是通过该
引用彼此相互连接。
----------------------------------------------------------------------------------------
两者使用时的选择:
ArrayList数组:查询快,增删慢
LinkedList链表:增删快,查询慢
0 0
- Java集合之List集合
- JAVA集合之List
- Java集合之List
- Java集合之List
- Java集合之List
- java集合之List
- java 集合之List
- Java集合之List
- Java之List集合
- Java之集合List
- Java集合之List
- Java集合之List
- 四大名捕-----JAVA集合之List
- java之List,Set集合
- java集合框架之list
- java集合类之List
- java集合框架之List
- java学习之List集合
- hashCode方法的作用----java判断来年各个元素是否重复的机制
- android web view的学习 2 通过WebChomeClient 实现进度条和title,通过WebViewClient 来进行url的拦截,和javascript的交互
- 线段树(3)之区间合并(基础题)
- 展示不全:fill_parent与写死高度
- glib-compile-schemas not found
- java集合之List
- php中一个神奇的函数extract
- Adroid之SqliteDatabase学习笔记
- POJ 2395--Out of Hay
- java集合之Set
- git push -u origin master 报错解决办法
- jstl \n替换为<br> jstl对特殊转义字符处理正确姿势
- java反射详解---具体代码操作看看反射都能干些什么
- java 重载