Java中的集合体系之Collection接口(下)
1.List接口中常用方法
1)void add(int index, Object ele):在index位置插入ele元素
2) boolean addAll(int index, Collection eles):从index位置开始将eles中的所有元素添加进来
3)Object get(int index):获取指定index位置的元素
4) int indexOf(Object obj):返回obj在集合中首次出现的位置
5)int lastIndexOf(Object obj):返回obj在当前集合中末次出现的位置
6)Object remove(int index):移除指定index位置的元素,并返回此元素
7)Object set(int index, Object ele):设置指定index位置的元素为ele
8) eleList subList(int fromIndex, int toIndex):返回从fromIndex到toIndex位置的子集合
package com.zretc.java;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class ListTest {
@SuppressWarnings("unchecked")
@Test
public void method() {
@SuppressWarnings("rawtypes")
List list = new ArrayList();
list.add("AA");
list.add("BB");
list.add(456);
list.add(456);
list.add(123);
//3.Object get (int index):获取指定索引(index)处的元素
System.out.println(list.get(3));//456
//4.int indexOf(Object obj):返回obj在集合中首次出现的位置,如果不存在则返回-1
System.out.println(list.indexOf(456));//返回2
System.out.println(list.indexOf(56));//返回-1
//5.int lastIndexOf(object obj):返回obj在集合中末次出现的位置,如果不存在则返回-1
System.out.println(list.lastIndexOf(456));//3
//6.1 Object remove(int index):移出指定索引(index)位置的元素,并返回此元素
// Object obj = list.remove(0);
System.out.println(list.remove(0));//AA
System.out.println(list);//[BB, 456, 456, 123]
//6.2 boolean remove(Object obj):移出obj这个元素
list.remove(new Integer(123));
System.out.println("删除123:" + list);//如果只写123,默认调用的是索引,所以要手动装箱
//Objct set(int index,Object element):设置指定索引位(index)位置的元素位element
list.set(2, "hello");
System.out.println(list);//[BB, 456, hello, 123]
//List sublist(int fromIndex , int toIndex):返回从fromIndex到toIndex位置的子集合
//注意是左闭右开 包含左边的内容 但是不涵盖右边的内容
List sub = list.subList(0, 3);
System.out.println(sub);//[BB, 456, hello]
System.out.println(list);//[BB, 456, hello, 123]
}
2.插入效率测试
比较ArrayList和LinkedList之间插入操作的时候,谁的效率更高?
package com.zretc.java;
import java.util.ArrayList;
import java.util.LinkedList;
import org.junit.Test;
public class TestLinkedArray {
@Test
public void ArrayListTest() {
long start = System.currentTimeMillis();
ArrayList<Integer> arrayList = new ArrayList<Integer>();
arrayList.add(9);
arrayList.add(8);
arrayList.add(7);
arrayList.add(6);
arrayList.add(5);
for(int i = 0; i < 100000; i++) {
arrayList.add(1,123);
}
long end = System.currentTimeMillis();
System.out.println("ArrayList执行的100000次插入的毫秒数:[" + (end - start) + "]");
//ArrayList执行的100000次插入的毫秒数:[427]
}
@Test
public void LinkedListTest() {
long start = System.currentTimeMillis();
LinkedList<Integer> linkedList = new LinkedList<Integer>();
linkedList.add(9);
linkedList.add(8);
linkedList.add(7);
linkedList.add(6);
linkedList.add(5);
for (int i = 0; i < 100000; i++) {
linkedList.add(1,123);
}
long end = System.currentTimeMillis();
System.out.println("LinkedList执行100000次插入的毫秒数:[" + (end - start) + "]");
//LinkedList执行100000次插入的毫秒数:[6]
}
}
3.遍历
package com.zretc.java;
import java.util.ArrayList;
import java.util.Iterator;
public class IteratorTest01 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("name = jack");
list.add("age = 18");
list.add("grade = 初三");
list.add("stuNo = 9378397");
// 方式1:Iterator迭代器遍历
System.out.println("迭代器:");
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
} System.out.println("**************************************");
// 方式2:增强for循环
System.out.println("增强for循环:");
for(String str : list) {
System.out.println(str);
}
System.out.println("**************************************");
// 方式3:普通for循环
System.out.println("普通for循环:");
for(int i = 0;i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
4.区分List中remove(int index)和remove(Object obj)
package com.zretc.java;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
public class Exer{
//区分List中remove(int index)和remove(Object obj)
@Test
public void testListRemove() {
List list = new ArrayList();
list.add(1);
list.add(2);
list.add(3);
updateList(list);
System.out.println(list);//[1]
}
private void updateList(List list) {
list.remove(2);//此刻调用的remove(int index)删除3,2这个值不会自动装箱
list.remove(new Integer(2));//此刻调用的是remove(Object obj)删除2
}
}