集合框架(List的三个子类的特点)
A:List的三个子类的特点
ArrayList:
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
Vector:
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
Vector相对ArrayList来说 查询慢(线程安全)
Vector相对LinkedList来说,增删慢(数组结构)
LinkedList:
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。Vector和ArrayList的区别
Vector是线程安全的,效率低
ArrayList是线程不安全的,效率高
共同点:都是数组实现的ArrayList和LinkedList的区别
ArrayList底层是数组结构,查询和修改快
LinkedList底层是链表结构,增和删比较快,查询和修改比较慢
共同点:都是线程不安全的- B:List有三个儿子,
当查询多的时候,用ArrayList
增删多的时候,用LinkedList
如果查询、增删都多的时候,用ArrayList
- B:List有三个儿子,
package com.wsq.bean;
public class Student {
private String name;
private int age;
public Student() {
super();
}
public Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setNaem(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student [naem=" + name + ", age=" + age + "]";
}
}
package com.wsq.collection;
import com.wsq.bean.Student;
public class Demo_array {
public Demo_array() {
}
public static void main(String[] args) {
//int [] arr = new int [5]; //创建基本数据类型数组
Student [] arr = new Student [5];//引用基本数据类型数组
arr[0] = new Student("张三",23);//创建一个学生对象,存储在数组的第一个位置
arr[1] = new Student("李四",24);//创建一个学生对象,存储在数组的第二个位置
arr[2] = new Student("王五",25);//创建一个学生对象,存储在数组的第三个位置
for(int i = 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import com.wsq.bean.Student;
/*
* ArrayList的父类重写toString方法,所以*/
public class Demo2_Collection {
@SuppressWarnings("unchecked")
public static void main(String[] args) {
@SuppressWarnings("rawtypes")
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
c.remove("b"); //删除指定元素
System.out.println(c);
}
public static void demo1(){
Collection c = new ArrayList();//父类引用指向子类对象
boolean b1 = c.add("abc"); //自动装箱new Booleanz(ture);
boolean b2 = c.add(true);
boolean b3 = c.add(100);
boolean b4 = c.add(new Student("张三",23));
boolean b5 = c.add("abc");
System.out.println(b1);
System.out.println(b2);
System.out.println(b3);
System.out.println(b4);
System.out.println(b5);
System.out.println(c.toString());
}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import com.wsq.bean.Student;
public class Demo3_Collection {
public static void main(String[] args) {
//demo1();
Collection c = new ArrayList();
c.add(new Student("张三",23));//object obj = new student("张三",23);
c.add(new Student("李四",24));
c.add(new Student("王五",25));
c.add(new Student("赵六",26));
Object [] arr = c.toArray();//将集合转换成数组
for (int i = 0; i < arr.length; i++) {
//System.out.println(arr[i]);
Student s = (Student)arr[i];//向下转型
System.out.println(s.getName() + "..." + s.getAge());
}
}
public static void demo1(){
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
Object[] arr = c.toArray();
for(int i= 0;i<arr.length;i++){
System.out.println(arr[i]);
}
}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
public class Demo4_CollectionAll {
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");
//取交集,如果调用的集合改变就返回true,如果调用的集合不变就返回false
boolean b = c1.retainAll(c2); //取交集
System.out.println(b);
System.out.println(c1);
}
public static void demo1(){
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("c");
c2.add("d");
//c1.addAll(c2); //将c2中的每一个元素添加到c1中
c1.add(c2);
System.out.println(c1);//将c2看成一个对象添加到c1中
}
public static void demo2(){
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("z");
boolean b = c1.removeAll(c2); //删除的是交集
System.out.println(b);
System.out.println(c1);
}
public static void demo3(){
Collection c1 = new ArrayList();
c1.add("a");
c1.add("b");
c1.add("c");
c1.add("d");
Collection c2 = new ArrayList();
c2.add("a");
c2.add("b");
c2.add("z");
boolean b = c1.containsAll(c2); //判断调用的集合是否包含传入的集合
System.out.println(b);
}
}
package com.wsq.collection;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
import com.wsq.bean.Student;
public class Demo5_Iterator {
public static void main(String[] args) {
Collection c = new ArrayList();
c.add(new Student("张三",23));
c.add(new Student("李四",24));
c.add(new Student("王五",25));
c.add(new Student("赵六",26));
//获取迭代器
Iterator it = c.iterator();
while(it.hasNext()){
//System.out.println(it.hasNext());
Student s = (Student)it.next(); //向下转型
System.out.println(s.getName() + "..." + s.getAge());
}
}
public static void demo1(){
Collection c = new ArrayList();
c.add("a");
c.add("b");
c.add("c");
c.add("d");
//对集合中的元素迭代(遍历)
Iterator it = c.iterator();
/*boolean b1 = it.hasNext(); //判断集合中是否有元素,有就返回true
Object obj1 = it.next();
System.out.println(b1);
System.out.println(obj1);
boolean b2 = it.hasNext(); //判断集合中是否有元素,有就返回true
Object obj2 = it.next();
System.out.println(b2);
System.out.println(obj2);*/
while(it.hasNext()){
System.out.println(it.next());
}
}
}
package com.wsq.list;
import java.util.List;
import java.util.ArrayList;
public class Demo1_LIst {
public static void main(String[] args) {
//demo1();
//demo2();
//demo3();
//demo4();
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c"); //index<=size并且index>=0都会报异常
list.add("d");
list.set(1, "z"); //将指定位置的元素修改
System.out.println(list);
}
public static void demo1(){
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c"); //index<=size并且index>=0都会报异常
list.add("d");
list.add(4,"f");
//list.add(1,"e");
//list.add(10,"z"); //当储存时,不存在的索引时,就会出现索引越界异常
System.out.println(list);
}
public static void demo2(){
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c"); //index<=size并且index>=0都会报异常
list.add("d");
Object obj = list.remove(1); //通过索引删除元素,将被删除的元素返回
System.out.println(obj);
System.out.println(list);
}
public static void demo3(){
List list = new ArrayList();
list.add(111);
list.add(222);
list.add(333);
list.remove(111); //删除的时候不会自动装箱,把111当成索引
System.out.println(list);
}
public static void demo4(){
List list = new ArrayList();
list.add("a");
list.add("b");
list.add("c"); //index<=size并且index>=0都会报异常
list.add("d");
/*Object obj1 = list.get(2);
System.out.println(obj1);*/
//通过索引遍历List集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
package com.wsq.list;
import java.util.Enumeration;
import java.util.Vector;
public class Demo2_Vector {
public static void main(String[] args) {
Vector wsq = new Vector();
wsq.addElement("a");
wsq.addElement("b");
wsq.addElement("c");
wsq.addElement("d");
Enumeration yy = wsq.elements();
while(yy.hasMoreElements()){
System.out.println(yy.nextElement());
}
}
}
package com.wsq.list;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
public class Demo4_ListIterator {
public static void main(String[] args) {
List list = new ArrayList(); //Object obj = new String();
list.add("a");
list.add("b");
list.add("world");
list.add("d");
list.add("e");
ListIterator lit = list.listIterator(); //获取迭代器
while(lit.hasNext()){
System.out.println(lit.next()); //获取元素并将指针向后移动
}
System.out.println("-------------------------");
while(lit.hasPrevious()){
System.out.println(lit.previous()); //获取元素并将指针向前移动
}
}
}