集合框架List部分
来源:互联网 发布:日本男装品牌 知乎 编辑:程序博客网 时间:2024/04/30 15:59
一.collection接口
Collection 层次结构 中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection。
常用方法:
boolean add(E e) 添加元素
boolean addAll(Collection c) 将指定 collection 中的所有元素都添加到此 collection 中。
void clear() 移除此 collection 中的所有元素。
boolean contains(Object o) 如果此 collection 包含指定的元素,则返回 true。
boolean containsAll(Collection<?> c) 如果此 collection 包含指定 collection 中的所有元素,则返回 true。
boolean equals(Object o) 比较此 collection 与指定对象是否相等。
int hashCode() 返回此 collection 的哈希码值。
boolean isEmpty() 如果此 collection 不包含元素,则返回 true。
Iterator iterator() 返回在此 collection 的元素上进行迭代的迭代器。
boolean remove(Object o) 从此 collection 中移除指定元素的单个实例,如果存在的话。
boolean removeAll(Collection c) 移除此 collection 中那些也包含在指定 collection 中的所有元素。
boolean retainAll(Collection c) 仅保留此 collection 中那些也包含在指定 collection 的元素。
int size() 返回此 collection 中的元素数。
Object[] toArray() 返回包含此 collection 中所有元素的数组。
二. Iterable
对 collection 进行迭代的迭代器
boolean hasNext() 如果仍有元素可以迭代,则返回 true。
E next() 返回迭代的下一个元素。
void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。
三.List
有序的 collection(也称为序列)。此接口的用户可以对列表中每个元素的插入位置进行精确地控制。用户可以根据元素的整数索引(在列表中的位置)访问元素,并搜索列表中的元素。
仅需注意的操作:
boolean equals(Object o) 比较指定的对象与列表是否相等。
E get(int index) 返回列表中指定位置的元素。
int hashCode() 返回列表的哈希码值。
int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引;如果此列表不包含该元素,则返回 -1。
E set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。
Object[] toArray() 返回按适当顺序包含列表中的所有元素的数组(从第一个元素到最后一个元素)。
四.ArrayList
List 接口的大小可变数组的实现,其实可以理解为一个对象数组
五.LinkedList
List 接口的链接列表实现,谈到链表学过C语言的人应该知道,链表的内存空间分配不连续,靠指针连接,链表空间中存储的包括本地址的数据和下一个数据的地址。
boolean add(E e) 将指定元素添加到此列表的结尾。
void add(int index, E element) 在此列表中指定的位置插入指定的元素。
boolean addAll(Collection<? extends E> c) 添加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。
boolean addAll(int index, Collection<? extends E> c) 将指定 collection 中的所有元素从指定位置开始插入此列表。
void addFirst(E e) 将指定元素插入此列表的开头。
void addLast(E e) 将指定元素添加到此列表的结尾。
void clear() 从此列表中移除所有元素。
boolean contains(Object o) 如果此列表包含指定元素,则返回 true。
Iterator descendingIterator() 返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
E element() 获取但不移除此列表的头(第一个元素)。
E get(int index) 返回此列表中指定位置处的元素。
E getFirst() 返回此列表的第一个元素。
E getLast() 返回此列表的最后一个元素。
int indexOf(Object o) 返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
int lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
ListIterator listIterator(int index) 返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。
boolean offer(E e) 将指定元素添加到此列表的末尾(最后一个元素)。
boolean offerFirst(E e) 在此列表的开头插入指定的元素。
boolean offerLast(E e) 在此列表末尾插入指定的元素。
E peek() 获取但不移除此列表的头(第一个元素)。
E peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
E peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
E poll() 获取并移除此列表的头(第一个元素)
E pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
E pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
E pop() 从此列表所表示的堆栈处弹出一个元素。
void push(E e) 将元素推入此列表所表示的堆栈。
E remove() 获取并移除此列表的头(第一个元素)。
E remove(int index) 移除此列表中指定位置处的元素。
boolean remove(Object o) 从此列表中移除首次出现的指定元素(如果存在)。
E removeFirst() 移除并返回此列表的第一个元素。
boolean removeFirstOccurrence(Object o) 从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
E removeLast() 移除并返回此列表的最后一个元素。
boolean removeLastOccurrence(Object o) 从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
E set(int index, E element) 将此列表中指定位置的元素替换为指定的元素。
int size() 返回此列表的元素数。
Object[] toArray() 返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
六.总结
1.数组和集合的区别: 数组虽然也可以存储对象,但长度是固定的,集合长度不固定
数组中可以存储基本数据类型,集合只能存储对象
2.集合本质:结合数据结构的内容,集合本质应该就是一个地址数组。
3.ArrayList和 LinkedList的区别:区别应该就在于内存地址的分配模式不同,ArrayList要求分配连续的地址,而LinkedList不要求,所以就产生了操作的差异性
对于连续的地址来说,要进行增删操作,必须将后面的数据按地址往前推移或者往后推移,对于非连续的地址来说,增删只要将指向下一个数据的指针指向改变就可以。
所以如果经常进行增删的操作,采用链表,否则选择数组更为方便,尤其是查询和排序的功能。
<span style="font-family:SimSun;font-size:18px;">/* 使用LinkedList模拟一个堆栈或者队列数据结构。 堆栈:先进后出 如同一个杯子。 队列:先进先出 First in First out FIFO 如同一个水管。 */ package test;</span>
<span style="font-family:SimSun;font-size:18px;">import java.lang.reflect.Array;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;</span>
<span style="font-family:SimSun;font-size:18px;">class Person{ private String name; private int age; Person(String name,int age){ this.name = name; this.age=age; } String showName(){ return this.name; } int showAge(){ return this.age; } </span>
<span style="font-family:SimSun;font-size:18px;">}</span>
<span style="font-family:SimSun;font-size:18px;">public class Collectiontest {</span>
<span style="font-family:SimSun;font-size:18px;"> public static void main(String[] args) { // TODO 自动生成的方法存根 //初始化 ArrayList al = new ArrayList(); //添加 al.add("java01"); al.add("java02"); al.add(new Person("Jack",25)); al.add(4); //输出。输出的哈希值暂时不处理 for(int i=0;i<al.size();i++) { System.out.println(al.get(i)); } //迭代器遍历 for(Iterator iter = al.iterator();iter.hasNext(); ){ System.out.println(iter.next()); } //初始化 LinkedList llis=new LinkedList(); llis.addFirst("java01"); llis.addFirst("java02"); llis.addFirst("java03"); llis.addFirst("java04"); llis.addFirst("java05"); System.out.println(llis); stack(llis); //queue(llis); } public static void stack(LinkedList l){ while(!l.isEmpty()){ System.out.println(l.removeFirst()); } } public static void queue(LinkedList l){ while(!l.isEmpty()){ System.out.println(l.removeLast()); } }}</span>
- 集合框架List部分
- 集合框架-List集合
- 集合框架-List集合-2
- 集合框架-List集合-3
- 集合框架(List)
- 集合框架之List
- JAVA集合框架-List
- 集合框架--List相关
- 集合框架之list
- 集合框架二:List
- 集合框架---List
- 集合框架LIST
- 集合框架-List()
- [集合框架] List 实现
- 集合框架--List
- 集合框架-List
- 集合框架之List
- 集合框架List\Set
- 异常和异常处理
- SBT下载特别慢的问题解决
- 我自己的软弱和情绪
- 多线程详解
- android HAL接口的编码小结
- 集合框架List部分
- 台式机U盘安装win10流程及故障解决
- IO流详解
- UVALive 6525 二分匹配
- GUI
- HTTP Live Streaming协议草案各版本加入的新特性
- Java核心技术第3章(2)
- 字符串中单词的个数
- quick-find【连通图】