List接口的基本介绍
1.List接口是Collection的子接口
2.List中的元素都是有序的除了LinkedList。
一些实用的方法
1.add()添加元素
2.get()得到指定位置的元素
3.addAll()追加一个List
4.indexOf()返回元素的位置
5.remove()删除指定位置的元素
6.set()替换指定位置的元素
7.subList()取子list集合
一些实用的遍历方法
1.方法1
Iterator it = list.iterator();
System.out.println("\n\nprint result::");
while(it.hasNext())
{
System.out.println(it.next());
}
2.方法2
Iterator it = list.iterator();
System.out.println("\n\nprint result::");
for(Object o : list)
{
System.out.println(o);
}
3.方法3
Iterator it = list.iterator();
System.out.println("\n\nprint result::");
for(int i=0;i<list.size();i++)
{
System.out.println(list.get(i));
}
一个例子
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
public class main {
@SuppressWarnings({"all"})
public static void main(String [] args)
{
List list = new LinkedList<>();
list.add(new Book("Java thinking", 108, "forran"));
list.add(new Book("Computer network", 144, "keith wor"));
list.add(new Book("Scrible upgrade", 43, "lihong"));
list.add(new Book("C program project practise", 23, "Ithiea"));
list.add(new Book("Chinese dictionary", 22, "Chinese people"));
// 冒泡排序
for(int i=0;i<list.size();i++)
{
for(int j=0;j<list.size()-i-1;j++)
{
Book book1 = (Book)list.get(j);
Book book2 = (Book)list.get(j+1);
if(book1.getPrice()>book2.getPrice())
{
list.set(j+1,book1);
list.set(j, book2);
}
}
}
for (Object object : list) {
System.out.println(object);
}
}
}
class Book{
String name;
double price;
String author;
public Book(String name,double price,String author)
{
this.name=name;
this.price=price;
this.author=author;
}
String getName()
{
return this.name;
}
double getPrice()
{
return this.price;
}
String getAuthor()
{
return this.author;
}
@Override
public String toString() {
return this.name+"\t"+this.price+"\t"+this.author;
}
}
ArrayList的分析
1.Arraylist可以添加多个重复的值
ArrayList arrayList = new ArrayList<>();
arrayList.add("1");
arrayList.add("1");
for (Object object : arrayList) {
System.out.println(object);
}
2.Arraylist的底层是数组实现的
3.相比于Vector,ArrayList的执行效率高,但是存在线程不安全情况。
4.ArrayList中维护了一个object类数组。
5.在创建ArrayList的时候,刚开始object数组的大小为0,在之后的添加元素满了的过程中,object数组的大小会以1.5倍速度的增长。
我们可以在一开始的时候定义ArrayList的大小如下所示
List list = new ArrayList(100);
以此来提高ArrayList的效率。(这样就没有必要重新分配空间,然后拷贝元素)
6.ArrayList增删改查的效率低。
Vector分析
1.vector 的实现
2.vector 的底层实现是数组。
3.相比于ArrayList,vector是线程安全的,但效率不如ArrayList。
4.和ArrayList的比较
LinkedList 分析
1.底层实现是双向链表。
2.可以添加任意的元素
3.线程不安全,没有实现同步。
4.对linkedlist添加和删除数据的效率是最高的。
5.和arraylist比较。
6.对数据的查询是低的。
因为底层代码是这样的