java 集合ArrayList实现类及List接口常用方法及LinkedList和Vector的特点

java 集合ArrayList实现类及List接口常用方法

    • 1.集合结构
    • 2.List接口详解
    • 3.List实现类之一:ArrayList
    • 4.List实现类之二:LinkedList
    • 5.List 实现类之三:Vector
    • 6.拓展ListIterator接口

1.集合结构

  • Collection接口
    • List接口:存储有序的,可重复的元素
      • ArrayList(主要的实现类)、LinkedList、Vector
    • Set接口:存储无序的,不可重复的元素
      • HashSet、 LinkedHashSet、TreeSet
  • Map接口:存储“键-值”对的数据
    • HashMap(主要实现类)、LinkedHashMap、TreeMap、HashTable(子类:Properties)

2.List接口详解

  1. Java中数组用来存储数据的局限性
  2. List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
  3. List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
  4. JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
  5. List新增加的方法,及demo
public class TestList {
	//ArrayList : List的主要实现类
	/*	List中相对于Collection新增的方法
	 * 	void add(int index, Object ele):在指定的索引位置index添加元素
		boolean addAll(int index, Collection eles):在指定索引位置,加上一个集合
		Object get(int index):获取指定索引的元素
		Object remove(int index):删除指定索引位置的元素
		Object set(int index, Object ele):设置指定的索引的位置为ele
		int indexOf(Object obj):返回obj在集合中首次出现的位置,没有则返回-1;
		int lastIndexOf(Object obj):返回obj在集合最后一次出现的位置,没有则返回-1;
		List subList(int fromIndex, int toIndex):返回从fromIndex到toIndex结束的子list,左闭右开的区间			
	 */
	
	@Test
	public void testList1() {
		List list = new ArrayList();
		list.add(123);
		list.add(456);
		list.add(new String("aaa"));
		list.add("gg");
		System.out.println(list);//[123, 456, aaa, gg]
		list.add(0, "IM");
		System.out.println(list);//[IM, 123, 456, aaa, gg]
		Object obj = list.get(1);
		System.out.println(obj);//456
		
		list.remove(0);
		System.out.println(list.get(0));//456
		
		list.set(0, 520);
		System.out.println(list.get(0));//520
			
	}
	
	@Test
	public void testList2() {
		List list = new ArrayList();
		list.add(123);
		list.add(456);
		list.add(new String("aaa"));
		list.add("gg");
		list.add(456);
		System.out.println(list.indexOf(456));//1
		System.out.println(list.lastIndexOf(456));//4
		
		System.out.println(list.indexOf(123) == list.lastIndexOf(123));//返回true意味着集合中只有一个123元素或一个也没有
		System.out.println(list.indexOf(4444));//-1
		
		List list1 = list.subList(0, 3);
		System.out.println(list1);//[123, 456, aaa]
	}
	
}

  1. List操作数据常用的方法:
    增(add())
    删除(remove)
    改(set(int index,Object obj))
    查(get(int index))
    插入(add(int index,Object obj))
    长度(size())

3.List实现类之一:ArrayList

  1. ArrayList 是 List 接口的典型实现类
  2. 本质上,ArrayList是对象引用的一个变长数组
  3. ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector
  4. Arrays.asList(…) 方法返回的 List 集合既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合
  5. 新增的方法及用法,参考上面的代码即可。

4.List实现类之二:LinkedList

  1. 对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高
  2. 新增的方法
/*
void addFirst(Object obj):在0的位置新增一个obj
void addLast(Object obj):在最后的位新增一个obj
Object getFirst():获取第一个元素
Object getLast():获取最后一个元素
Object removeFirst():删除第一个元素
Object removeLast():删除最后一个元素
*/

5.List 实现类之三:Vector

  1. Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
  2. 在各种list中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
  3. 新增加的方法:
/*
void addElement(Object obj)
void insertElementAt(Object obj,int index)
void setElementAt(Object obj,int index)
void removeElement(Object obj)
void removeAllElements()
*/

6.拓展ListIterator接口

  1. List 额外提供了一个 listIterator() 方法,该方法返回一个 ListIterator 对象, ListIterator 接口继承了 Iterator 接口,提供了专门操作 List 的方法:
/*
void add():将指定的元素插入列表(可选操作)。
boolean hasPrevious():如果以逆向遍历列表,列表迭代器有多个元素,则返回 true。
Object previous(): 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。
Boolean hasNext(): 以正向遍历列表时,如果列表迭代器有多个元素,则返回 true(换句话说,如果 next 返回一个元素而不是抛出异常,则返回 true)。
Object next():返回列表中的下一个元素。
*/
  1. 上面有逆向遍历的方法

你可能感兴趣的:(java 集合ArrayList实现类及List接口常用方法及LinkedList和Vector的特点)