集合与数组的区别
大家都是容器
- 数组是固定长度的,集合的长度是可变的
- 数组放的数据都是基本数据类型(四类八种),集合放的数据都是引用数据类型(String、Integer、自定义的对象等等)
- 集合中对于基本数据会转换为引用数据类型再转换
集合包含的内容
- Collection——接口(Interface)
- List(接口)集合——特定顺序的元素
- Set(接口)集合——不能够有重复的元素
- Map——类似于数据库,主要存储“键值对”(key-value)
- Iterable(集合的访问迭代),返回此集合中的元素的迭代器
List集合
List集合是一个有序、可重复的集合,集合中每个元素都有对应的顺序索引
List允许加入重复元素是因为可以通过索引来访问指定位置的元素
List集合默认按照元素的添加顺序增加元素的索引
ArrayList
简介
ArrayList是基于数组实现的List类,实现所有可选列表操作,并允许所有元素,包括null
初始化
ArrayList<E> arrayList = new ArrayList<E>(); #初始数据类型为E,容量大小为10
常用方法
boolean add(E e) #将指定的元素列表的结束
void add(int index, E element) #在列表中指定的位置上插入指定的元素
boolean addAll(Collection<? extends E> c) #追加指定集合的所有元素到这个列表的末尾,按他们的指定集合的迭代器返回
boolean addAll(int index, Collection<? extends E> c) #将指定集合中的所有元素插入到该列表中,从指定位置开始
boolean contains(Object o) #返回 true如果这个列表包含指定元素
void clear() #从这个列表中移除所有的元素
E get(int index) #返回此列表中指定位置的元素
E remove(int index) #移除此列表中指定位置的元素
boolean remove(Object o) #从该列表中移除指定元素的第一个发生,如果它是存在的
E set(int index, E element) #用指定元素替换此列表中指定位置的元素
Object[] toArray() #返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)
List集合遍历的方法
package com.ArrayList.util;
import java.util.ArrayList;
import java.util.Iterator;
/*
* @author Administrator
* @version 1.0
*/
public class ArrayListDemo {
public static void main(String[] args){
//初始化
ArrayList<Integer> arrayList = new ArrayList<Integer>();
for (int i = 0; i < 5; i++){
arrayList.add(i);
}
//方法1,通过size()方法
for (int i = 0; i < arrayList.size(); i++){
System.out.println(arrayList.get(i));
}
//方法二,通过迭代器Iterator
//初始化Iterator
Iterator iterator = arrayList.iterator();
//通过hashNext来判断是否有下个值,然后next输出这个值
while (iterator.hasNext()){
System.out.println(iterator.next());
}
//方法三,通过增强for循环对arrayList中的每一个对象赋给integer
for (Integer integer: arrayList){
System.out.println(integer);
}
//方法四,通过foreach()方法
System.out.println("jdk1.8的新特性");
arrayList.forEach(integer -> System.out.println(integer));
arrayList.forEach(integer -> {System.out.println(integer);System.out.println(integer++);});
}
}
LinkedList
简介
LinkedList是链表类数据结构
LinkedList与ArrayList的不同
- 链表中的元素可以任意的增加和删除,效率很高,但是查询效率不如ArrayList(有索引)
- 将对象存放在独立的空间中,而且每个空间保存了下一个连接的索引
初始化
LinkedList<E> linkedList = new LinkedList<E>();
常用方法
void addFirst(E e) #在此列表的开始处插入指定的元素
void addLast(E e) #将指定的元素列表的结束
E getFirst() #返回此列表中的第一个元素
E getLast() #返回此列表中的最后一个元素
boolean offer(E e) #将指定的元素添加到列表的尾部(最后一个元素)。
boolean offerFirst(E e) #在列表的前面插入指定的元素。
boolean offerLast(E e) #在列表的结尾插入指定的元素。
E element() #检索,但不删除,此列表的头(第一个元素)
E peek() #检索,但不删除,此列表的头(第一个元素)
E peekFirst() #检索,但不删除该列表的第一个元素,或返回 null如果这个列表是空的。
E peekLast() #检索,但不删除该列表的最后一个元素,或返回 null如果这个列表是空的。
E poll() #检索并删除此列表的头(第一个元素)。
E pollFirst() #检索并移除此列表的第一个元素,或返回 null如果这个列表是空的。
E pollLast() #检索并移除此列表的最后一个元素,或返回 null如果这个列表是空的。
E pop() #从这个列表所表示的堆栈中弹出一个元素。
void push(E e) #将一个元素推到由该列表所表示的堆栈上。