集合List 下面 有 ArrayList LinkedList Vector
ArrayList:基于数组结构的一段连续空间 ,添加,删除效率低,查询效率高.
1.允许存放重复的元素
2.也可以存放null值
3.ArrayList实例都有一个默认的容量 (10)
4.ArrayList集合的长度自动增长(增长是当前长度的一半)
5.ArrayList是线程不安全的
6.ArrayList数据是在尾部增加,不能向前增加
LinkedList:基于链表结构 ,以及双端队列结构(两端点的输出)
1.LinkedList类可以在集合前后面增加元素,灵活性比较强
2.线程不安全
3.LinkedList除了和ArrayList的常见的方法,还提供了一些自己的方法.
例如:
addFirst(E e) 将指定元素插入此列表的开头
addLast(E e) 将指定元素插入此列表的结尾
E getFirst() 返回此列表的第一个元素
E getLast() 返回此列表的最后一个元素
下面贴点代码:
/**
*
- @author dch
*/
//ArrayList
public class TestArrayList {
public static void main(String[] args) {
List list = new ArrayList();
System.out.println(list);//默认10个空间
//添加元素,自动将这些元素转成了Object
list.add("hello");
list.add("123");
list.add("你好");
//删除某个下标的元素
//list.remove(0);
//System.out.println(list);
//删除某个元素
//list.remove("123");
//System.out.println(list);
//添加 默认添加到末尾
list.add(456);//这里说明是宽进;我们一般要严进宽出
System.out.println(list.get(2));
System.out.println(list);
//将元素添加到指定的位置
list.add(1, "男生");
System.out.println(list);
//遍历所有元素
list.size();//集合的长度
for (int i = 0; i < list.size(); i++) {
System.out.print(list.get(i)+",");
}
System.out.println();
//数组 变成 ArrayList
String [] array = {"我","是","男生"};
//数组里面的一个方法
List list2 = Arrays.asList(array);
/*for (int i = 0; i < array.length; i++) {
System.out.print(list2.get(i)+",");
}*/
//这样做了list2才能调用list里面的方法,
//只不过这里用list3代替了list2
List list3 = new ArrayList(list2);
System.out.println();
//addAll 将集合list2里面的元素全部加到list集合里面
//默认加在后面
//list.addAll(list2)
//System.out.println(list);
System.out.println(list3);
//移除列表里面的元素
//list3.clear();
//System.out.println(list3);
//index 查找某元素的下标
//System.out.println(list3.indexOf("男生"));
//查找集合里面有没有某元素,有 true
System.out.println(list.contains("中国"));
//集合转成数组 对象数组
//System.out.println(list.toArray());
}
}
接着操作一下对象:
/**
*
- @author dch
*/
//定义一个学生类
public class Student {
//姓名
private String name;
//年龄
private int age;
//有参构造器
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
//设置set/get方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
/**
*
- @author dch
*/
//ArrayList
public class TestArrayList2 {
public static void main(String[] args) {
//先定义arraylist来存储对象
List list = new ArrayList();
//添加对象数据
list.add(new Student("杜", 22));
list.add(new Student("李", 21));
list.add(new Student("赵", 23));
list.add(new Student("王", 25));
list.add(new Student("周", 26));
list.add("钱");
//获取数据,通过for循环
for (int i = 0; i < list.size(); i++) {
Object obj = list.get(i);
if(obj instanceof Student){
Student stu = (Student)obj;//向下转型
System.out.println(stu.getName()+","+stu.getAge());
}else{
System.out.println(obj);
}
}
}
}
/**
*
- @author dch
*/
//LinkedList
public class LinkedListTest {
public static void main(String[] args) {
LinkedList list = new LinkedList();
list.addFirst("hello");
list.add("hi");
list.addFirst("ok");
for(int i = 0 ;i<list.size();i++){
System.out.println(list.get(i));
}
list.addLast("dd");
Object ele = list.peek();//检索但不删除此列表的头部(第一个元素)
System.out.println(ele);
}
}