java 集合ArrayList实现类及List接口常用方法
1.集合结构
- Collection接口
- List接口:存储有序的,可重复的元素
- ArrayList(主要的实现类)、LinkedList、Vector
- Set接口:存储无序的,不可重复的元素
- HashSet、 LinkedHashSet、TreeSet
- Map接口:存储“键-值”对的数据
- HashMap(主要实现类)、LinkedHashMap、TreeMap、HashTable(子类:Properties)
2.List接口详解
- Java中数组用来存储数据的局限性
- List集合类中元素有序、且可重复,集合中的每个元素都有其对应的顺序索引。
- List容器中的元素都对应一个整数型的序号记载其在容器中的位置,可以根据序号存取容器中的元素。
- JDK API中List接口的实现类常用的有:ArrayList、LinkedList和Vector。
- List新增加的方法,及demo
public class TestList {
@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);
list.add(0, "IM");
System.out.println(list);
Object obj = list.get(1);
System.out.println(obj);
list.remove(0);
System.out.println(list.get(0));
list.set(0, 520);
System.out.println(list.get(0));
}
@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));
System.out.println(list.lastIndexOf(456));
System.out.println(list.indexOf(123) == list.lastIndexOf(123));
System.out.println(list.indexOf(4444));
List list1 = list.subList(0, 3);
System.out.println(list1);
}
}
- List操作数据常用的方法:
增(add())
删除(remove)
改(set(int index,Object obj))
查(get(int index))
插入(add(int index,Object obj))
长度(size())
3.List实现类之一:ArrayList
- ArrayList 是 List 接口的典型实现类
- 本质上,ArrayList是对象引用的一个变长数组
- ArrayList 是线程不安全的,而 Vector 是线程安全的,即使为保证 List 集合线程安全,也不推荐使用Vector
- Arrays.asList(…) 方法返回的 List 集合既不是 ArrayList 实例,也不是 Vector 实例。 Arrays.asList(…) 返回值是一个固定长度的 List 集合
- 新增的方法及用法,参考上面的代码即可。
4.List实现类之二:LinkedList
- 对于频繁的插入或删除元素的操作,建议使用LinkedList类,效率较高
- 新增的方法
5.List 实现类之三:Vector
- Vector 是一个古老的集合,JDK1.0就有了。大多数操作与ArrayList相同,区别之处在于Vector是线程安全的。
- 在各种list中,最好把ArrayList作为缺省选择。当插入、删除频繁时,使用LinkedList;Vector总是比ArrayList慢,所以尽量避免使用。
- 新增加的方法:
6.拓展ListIterator接口
- List 额外提供了一个 listIterator() 方法,该方法返回一个 ListIterator 对象, ListIterator 接口继承了 Iterator 接口,提供了专门操作 List 的方法:
- 上面有逆向遍历的方法