List相比Collecion多了如下几个方法:
add(object) 增
remove(index) 按照索引删
set(index,object) 改
indexof(object) 查
add(index,object) 插入
get(index) 获取
import java.util.ArrayList;
import java.util.List;
public class TestList {
public static void main(String[] args) {
List list=new ArrayList();
list.add("jarvis");
list.add(2);
list.add(null);
list.add("robin");
System.out.println("after add null...");
System.out.println("list = " + list);
list.add(1,"xiaoyu");
System.out.println("after add index element...");
System.out.println("list = " + list);
/*
// 索引越界
list.add(10,"xiaoyu");
System.out.println("list = " + list);
*/
list.remove(2);
System.out.println("after remove index 2...");
System.out.println("list = " + list);
list.remove((Integer)2);
System.out.println("after remove integer 2...");
System.out.println("list = " + list);
list.set(2,"creeper");
System.out.println("after set index 2...");
System.out.println("list = " + list);
System.out.println("after indexof...");
System.out.println("robin的index is " + list.indexOf("robin"));
System.out.println("after get...");
System.out.println("index 2 is " + list.get(2));
}
}
案例实现:使用List添加5本书,并按照价格由低到高排序
public class Books {
String name;
int price;
public Books() {
}
public Books(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public String toString() {
return String.format("名称:%s 价格%d" ,name,price);
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class TestList {
public static void main(String[] args) {
List<Books> books = new ArrayList();
books.add(new Books("语文",50));
books.add(new Books("MATH",30));
books.add(new Books("ENGLISH",20));
books.add(new Books("CHEMISTRY",40));
books.add(new Books("PHYSICS",50));
int length=books.size();
// 冒泡排序
for (int i = 0; i <length ; i++) {
for (int j = 0; j <length-i-1; j++) {
if(books.get(j).price>books.get(j+1).price){
books.add(books.get(j));
books.set(j,books.get(j+1));
books.set(j+1,books.get(length));
books.remove(length);
}
}
}
// 三种方式遍历
// way 1
for (int i = 0; i <books.size() ; i++) {
System.out.println( books.get(i));
}
// way2
Iterator iterator=books.iterator();
while(iterator.hasNext()){
Object book1=iterator.next();
System.out.println( book1);
}
// way2
for(Object object:books){
System.out.println( object);
}
}
}
其实完全是可以申请两个b1,b2对象作为变量
for (int i = 0; i <length ; i++) {
for (int j = 0; j <length-i-1; j++) {
Books b1=books.get(j);
Books b2=books.get(j+1);
if(b1.price>b2.price){
books.set(j,b2);
books.set(j+1,b1);
}
}
}
ArrayList 初始容量与扩容机制:
ArrayList和Vector对比: