1、List
List接口是Collection的子接口,List是一个可重复集合
2、ArrayList和LinkedList
ArrayList和LinkedList是List接口最常见的两个实现类,分别用动态数组和链表的方式实现了List接口。
3、get与set方法
List除了继承Collection定义的方法外,还根据其线性表的数据结构定义了一系列方法,其中最常用的就是基于下标的get和set方法。
E get(int index):获取集合中指定下标对应的元素,下标从0开始。
E set(int index, E elment):将给定的元素存入给定位置,并将原位置的元素返回。
1 List list=new ArrayList(); 2 list.add("java"); 3 list.add("C#"); 4 list.add("javascritp"); 5 list.add("vbscript"); 6 //遍历集合 7 for(int i=0;i<list.size();i++){ 8 System.out.println(list.get(i)); 9 } 10 System.out.println("============================"); 11 //交换元素2和3的位置 12 list.set(2, list.set(1, list.get(2)) ) ; 13 for(int i=0;i<list.size();i++){ 14 System.out.println(list.get(i)); 15 } 16 17 18 结果 19 java 20 C# 21 javascritp 22 vbscript 23 ============================ 24 java 25 javascritp 26 C# 27 vbscript
3. 插入和删除
List根据下标的操作还支持插入与删除操作:
void add(int index,E element):
将给定的元素插入到指定位置,原位置及后续元素都顺序向后移动。
E remove(int index):
删除给定位置的元素,并将被删除的元素返回。
4、 subList方法
List的subList方法用于获取子List。
需要注意的是,subList获取的List与原List占有相同的存储空间,对子List的操作会影响的原List。
List<E> subList(int fromIndex, int toIndex);
fromIndex和toIndex是截取子List的首尾下标(前包括,后不包括) 。
5. List转换为数组
List的toArray方法用于将集合转换为数组。但实际上该方法是在Collection中定义的,所以所有的集合都具备这个功能。
其有两个方法:
Object[] toArray()
<T>T[] toArray(T[] a)
1 List<String> list=new ArrayList<String>(); 2 list.add("java"); 3 list.add("C#"); 4 list.add("javascritp"); 5 list.add("vbscript"); 6 7 Object[] arr= list.toArray(); 8 9 String[] arr2 = list.toArray(new String[]{} );
其中第二个方法是比较常用的,我们可以传入一个指定类型的数组,该数组的元素类型应与集合的元素类型一致。返回值则是转换后的数组,该数组会保存集合中所有的元素。
6. 数组转换为List
Arrays类中提供了一个静态方法asList,使用该方法我们可以将一个数组转换为对应的List集合。其方法定义为:
static <T>List<T> asList<T… a> 返回的List的集合元素类型由传入的数组的元素类型决定。
需要注意的是,返回的集合我们不能对其增删元素,否则会抛出异常。并且对集合的元素进行的修改会影响数组对应的元素。