常用方法和遍历方式
package com.yuzhenc.collection;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author: yuzhenc
* @date: 2022-03-03 21:15:16
* @desc: com.yuzhenc.collection
* @version: 1.0
*/
public class Test03 {
public static void main(String[] args) {
/*
List接口中常用方法:
增加:add(int index, E element)
删除:remove(int index) remove(Object o)
修改:set(int index, E element)
查看:get(int index)
判断:
*/
List list = new ArrayList();
list.add(1);
list.add(2);
//list.add(3,"hello");//报错,index的范围:[0,list,size()]
list.add(2,"hello");//在索引2的位置添加元素hello
System.out.println(list);//[1, 2, hello]
list.add(1,"sqlboy");
System.out.println(list);//[1, sqlboy, 2, hello]
//修改索引位上的元素的值,index范围[0,list.size)
list.set(0,0);
System.out.println(list);//[0, sqlboy, 2, hello]
//参数位int类型的时候,实际调用的是方法 remove(int index),返回删除的元素
System.out.println(list.remove(3));//hello
System.out.println(list);//[0, sqlboy, 2]
//参数位非int时,实际调用的是方法 remove(Object o),返回删除成功删除
System.out.println(list.remove("sqlboy"));//true
System.out.println(list.remove("hello"));//false
System.out.println(list);//[0, 2]
Object o = list.get(0);
System.out.println(o);//0
//遍历
//1.普通for循环
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+"\t");//0 2
}
System.out.println();
//2.增强for循环
for (Object object : list) {
System.out.print(object+"\t");//0 2
}
System.out.println();
//3.迭代器
for (Iterator i = list.iterator(); i.hasNext(); ) {
System.out.print(i.next()+"\t");//0 2
}
}
}
ArrayList和Vector
- 线程安全:Vector使用了Synchronized 来实现线程同步,是线程安全的,而ArrayList 是非线程安全的;
- 性能:ArrayList优于Vector;
- 扩容:Vector每次增加1倍,ArrayList每次增加0.5倍;
package com.yuzhenc.collection;
import java.util.ArrayList;
import java.util.Vector;
/**
* @author: yuzhenc
* @date: 2022-03-03 21:46:56
* @desc: com.yuzhenc.collection
* @version: 1.0
*/
public class Test04 {
public static void main(String[] args) {
ArrayList arrayList = new ArrayList();
long startTime = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
arrayList.add(i);
}
long endTime = System.currentTimeMillis();
Vector vector = new Vector();
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < 1000000; i++) {
vector.add(i);
}
long endTime1 = System.currentTimeMillis();
System.out.println("ArrayList写:"+(endTime-startTime));//
System.out.println("Vector写:"+(endTime1-startTime1));//
long startTime2 = System.currentTimeMillis();
for (int i = 0; i < arrayList.size(); i++) {
int j = 2;
}
long endTime2 = System.currentTimeMillis();
long startTime3 = System.currentTimeMillis();
for (int i = 0; i < vector.size(); i++) {
int j = 2;
}
long endTime3 = System.currentTimeMillis();
System.out.println("ArrayList读:"+(endTime2-startTime2));
System.out.println("Vector读:"+(endTime3-startTime3));
}
}
LinkedList
package com.yuzhenc.collection;
import java.util.Iterator;
import java.util.LinkedList;
/**
* @author: yuzhenc
* @date: 2022-03-03 22:18:04
* @desc: com.yuzhenc.collection
* @version: 1.0
*/
public class Test05 {
public static void main(String[] args) {
/*
LinkedList常用方法:
增加 addFirst(E e) addLast(E e)
offer(E e) offerFirst(E e) offerLast(E e)
删除 poll()
pollFirst() pollLast() ---》JDK1.6以后新出的方法,提高了代码的健壮性
removeFirst() removeLast()
修改
查看 element()
getFirst() getLast()
indexOf(Object o) lastIndexOf(Object o)
peek()
peekFirst() peekLast()
判断
*/
LinkedList linkedList = new LinkedList();
linkedList.add(1);
linkedList.add(2);//在尾部添加元素,并且返回true
linkedList.addFirst(0);//在首部添加元素,无返回值
linkedList.addLast(3);//在尾部添加元素,无返回值
linkedList.offer("hello");//在尾部添加元素,并且返回true
linkedList.offerFirst(" ");//在首部添加元素,并且返回true
linkedList.offerLast("sqlboy");//在尾部添加元素,并且返回true
System.out.println(linkedList);//[ , 0, 1, 2, 3, hello, sqlboy]
//LinkedList和ArrayList都可以添加重复元素
linkedList.add(3);
System.out.println(linkedList);//[ , 0, 1, 2, 3, hello, sqlboy, 3]
//删除头部元素,并返回该元素,若没有元素则返回null
System.out.println(linkedList.poll());//
System.out.println(linkedList);//[0, 1, 2, 3, hello, sqlboy, 3]
//删除头部元素,并返回该元素,若没有元素则返回null
System.out.println(linkedList.pollFirst());//0
System.out.println(linkedList);//[1, 2, 3, hello, sqlboy, 3]
//删除尾部元素,并返回该元素,若没有元素则返回null
System.out.println(linkedList.pollLast());//3
System.out.println(linkedList);//[1, 2, 3, hello, sqlboy]
/*
linkedList.clear();
System.out.println(linkedList.remove());//移除首部元素,首部没有元素则抛出异常java.util.NoSuchElementException
System.out.println(linkedList.removeFirst());//移除首部元素,首部没有元素则抛出异常java.util.NoSuchElementException
System.out.println(linkedList.removeLast());//移除尾部元素,首部没有元素则抛出异常java.util.NoSuchElementException
*/
//遍历
//普通for循环
for (int i = 0; i < linkedList.size(); i++) {
System.out.print(linkedList.get(i)+"\t");//1 2 3 hello sqlboy
}
System.out.println();
//增强for循环
for (Object o : linkedList) {
System.out.print(o+"\t");//1 2 3 hello sqlboy
}
System.out.println();
//迭代器
for (Iterator i = linkedList.iterator(); i.hasNext() ; ) {
System.out.print(i.next()+"\t");//1 2 3 hello sqlboy
}
}
}