Java Collection集合(1)——Java学习笔记15(补)

在这里插入图片描述

1.ArrayList类

method
boolean add(E e);
void clear();
boolean isEmpty();
boolean remove(Object o);
public e[] toArray();

2.Collection接口中带All的方法

boolean addAll(collection c2);		//添加c2中的的元素
boolean removeAll(collection c2);	//删除两个集合的交集
boolean containsAll(collectioin c2);//判断调用的集合是否包含传入的集合
boolean retainAll(collection c2);	//取交集,如果调用的集合改变,返回true,不变则false

3.Iterator接口

获取Iterator

Iterator i = c.iterator();

method
boolean hasNext();	//判断集合中是否有元素 
E next();			//获取下一个元素
viod remove();		//删除当前元素
原理

4.List接口

特有的方法
void add(int index, E element);//在索引上添加元素
E remove(int index);//根据索引删除元素
E get(int index);	//根据索引获取元素
E set(int index,E element);//修改指定索引的元素

5.ConcurrentModificationException并发修改异常

迭代器在遍历元素的同时,集合修改元素会产生
	List<String> list = new ArrayList<String>();
	list.add("a");
	list.add("b");
	list.add("world");
	list.add("d");
	list.add("e");
	
	Iterator<String> it = list.iterator();		//获取迭代器
	while (it.hasNext()) {						//判断集合中是否有元素
		String str = (String)it.next();
		if ("world".equals(str)) {
			list.add("javaee");					//遍历的同时在增加元素,并发修改
		}
	}
	//产生ConcurrentModificationException
修改方法

List接口中的listIterator()方法

	ListIterator<String> lit = list.listIterator();//获取迭代器,List集合特有
	while (lit.hasNext()) {
		String str = (String)lit.next();
		if ("world".equals(str)) {
			lit.add("javaee");					//遍历的同时在增加元素,并发修改
		}
	}

6.ListIterator接口

获取迭代器
List Iterator<E> lit = list.listIterator();
方法
ListIterator<String> lit = list.listIterator();
while(lit.hasNext()) {
	System.out.println(lit.next());	//获取元素并将指针向前移动
}
System.out.println("---------------");
while (lit.hasPrevious()) {
	String string = (String) lit.previous();
	System.out.println(string);
}

7.Vector类

实例化
Vector<E> v = new Vector<E>();
method
boolean addElement(E e);
Enumeriation elements();
e.g.
Vector<String> v = new Vector<String>();
v.addElement("hello");		//添加元素

Enumeration en = v.elements();	//获取枚举
while (en.hasMoreElements()) {	//判断枚举中是否有元素
	System.out.println(en.nextElement());	//获取集合中的元素
}

8.集合框架

在这里插入图片描述

(1)ArrayList

ArrayList底层由数组实现,长度为10,当数组满后自动创建一个新数组并增长百分之五十。
**特点:**查询很快(通过索引直接找值),根据size来判断是否越界。增删很慢(增删处后的所有的元素都要移动)。
线程不安全,效率高。

(2)LinkedList

LinkedList底层用链表实现。
**特点:**查询很慢。增删很快。线程安全,效率低。
**查询方法源代码:**通过索引与size的一半比较,决定从前往后还是从后往前查询。

(3)Vector

**特点:**查询相对ArrayList慢。增删很慢(增删处后的所有的元素都要移动)。
线程安全,效率低。

对比

ArrayList和Vector:

  1. ArrayList线程不安全,Vector线程安全。LinkedList更快
  2. 二者都是数组实现的
    LinkedList和ArrayList:
  3. LinkedList链表实现,增删快,查询修改慢。ArrayList数组实现,增删慢,查询修改快。
  4. 都是线程不安全的。
使用

增删比较多 LinkedList
查询修改比较多 Arraylist
都比较多 arrayList

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值