黑马程序员——集合中List接口

时间:2022-09-03 15:08:12

——- android培训java培训、期待与您交流! ———-
集合
Collection 中 List接口
List接口特点 ArrayList LinkedList Vector
有序的集合:不是abc 123这样的顺序
指的是,存储的顺序,和取出顺序是一致的
有索引,像数组一样,操作集合
允许存储重复的元素

1 集合中的子类ArrayList的自身特性
ArrayList implements List{}
List extends Collection

ArrayList 底层数据结构就是数组
ArrayList提供一些方法,操作自己内部的数组,实际上不常用,ArrayList本身就可以操作数组
ArrayList线程不安全的,不同步,运行速度快
数组默认大小 new ArrayList() 10个 , 原数组50%
底层是数组,集合查询速度快,但是增删慢

public static void method(){
//创建ArrayList自己的对象,不使用接口引用
ArrayList array = new ArrayList();
//add存储字符串
array.add("abc1");
array.add("abc5");
array.add("abc7");
array.add("abc4");
array.add("abc2");

//使用集合方法iterator获取迭代器接口Iterator实现类对象
Iterator it = array.iterator();
//hasNext()判断有没有下一个元素
while(it.hasNext()){
//next()方法获取集合元素
System.out.println(it.next());
}
}

2 集合中的子类 LinkedList类的自身特性
class LinkedList implements List
List extends Collection

LinkedList 数据结构底层:链表结构
容器中采用对象记录地址的方式进行存储
LinkedList线程不安全,不同步,运行速度快
LinkedList集合 查询速度慢,增删块
提供了特殊功能,直接操作链表的开头和结尾

public static void main(String[] args) {
//好处:自己的子类,可以使用子类特有
//扩展性比较差
LinkedList link = new LinkedList();

link.add("terg4ey");
link.add("jhgfvc");
link.add("wedf");
link.add("mhnbvc");
link.add(123);
link.add(0.0);

Iterator it = link.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}

LinkedList提供特有方法
可以方便操作链表的开头和结尾

添加方法,存储元素到集合
addFirst()元素添加到开头
addLast()元素添加到结尾

删除方法,删除开头和结尾
Object removeFirst()
Object removeLast()
返回被移除元素

获取方法,获取开头和结尾
Object getFirst()
Object getLast()

在JDK1.6的时候,LinkedList类,出现了一组新的方法
替代了 first last操作

void addFirst boolean offerFirst
void addLast boolean offerLast

Object removeFirst pollFirst
Object removeLast pollLast

Object getFirst peekFirst
Object getLast peeakLast

删除,获取方法,如果集合中没有元素,抛出异常
替换后的方法,在集合中没有元素的时候,返回null 不会抛出异常

3 集合中的子类 Vector类
出现于JDK1.0版本
集合框架 Collection List 出现于JDK1.2版本
从1.2开始,被ArrayList取代

JDK1.2开始 Vector类 改进为实现List接口
Vector 底层也是数组结构,可变大小数组
默认初始化容量 10个

和ArrayList区别:
线程安全的集合,同步的集合,运行速度慢
扩容每次增长100%