List集合的子实现类及其特点

ArrayList: 底层数据结构是数组形式,满足数组结构的特点:查询快,增删慢
从线程安全问题角度看:线程不安全,不同步,执行效率高。
vector: 底层结构是数组形式,查询快,增删慢
从线程安全问题角度看:线程安全,同步,执行效率低
LinkedList:底层数据结构是链接列表,查询慢,增删快
从线程安全问题角度看:线程不安全,不同步,执行效率高。
如果实现多线程程序,一般要是安全的类:
StringBuffer,Vector<E>,hashtable<K,V>
如果在一般的需求中没有指明使用集合去完成,都默认采用ArrayList如果需求中要考虑线程安全,那么使用Vector集合!

package _09.homework;

import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListDemo {
    public static void main(String[] args){
        ArrayList<String> array=new ArrayList<String>();
        array.add("八百里分麾下之,");
        array.add("五十弦翻塞外声,");
        array.add("沙场秋点兵!");
        Iterator<String>it=array.iterator();
        while(it.hasNext()){
            String s=it.next();
            System.out.print(s);
        }
    }
}

Vector的特有功能:
public void addElement(E obj)//相当于:add(object e)
public Enumeration<E> elements()//相当于:Iterator iterator()
Enumeration接口:向量的组件枚举有两个方法
boolean hasMoreElements();//相当于:hasNext()
Object nextElement();//相当于:next();

package _09.homework;

import java.util.Enumeration;
import java.util.Vector;

public class VectorDemo {
    public static void main(String[] args) {
        Vector<String> v = new Vector<String>();
        v.addElement("花好");
        v.addElement("月圆");
        v.addElement("人长久");
        v.addElement("!");
        Enumeration<String> en = v.elements();
        while (en.hasMoreElements()) {
            String s = en.nextElement();
            System.out.print(s);
        }
    }
}

特有功能:
添加功能:
public void addFirst(E e)//将指定元素插入此列表的开头。
public void addLast(E e)//将指定元素添加到此列表的结尾。
获取功能:
public Object getFirst()//返回此列表的第一个元素
public Object getLast()//返回此列表的最后一个元素。
删除功能:
public Object removeFirst()//移除并返回此列表的第一个元素。
public Object removeLast()//移除并返回此列表的最后一个元素

   public class LinkedListDemo {
    public static void main(String[] args) {        
        LinkedList link = new LinkedList() ;        
        //添加元素
        link.addFirst("明月几时有,") ;
        link.addFirst("把酒问青天。") ;
        link.addFirst("不知天上宫阙,") ;
        link.addFirst("今夕是何年。")     
        /*
        Object obj = link.getFirst() ;
        System.out.println(obj);
        Object obj2 = link.getLast() ;
        System.out.println(obj2);*/
        /*System.out.println("removeFirst:"+link.removeFirst());
        System.out.println("removeLast:"+link.removeLast());*/

        System.out.println("link:"+link);
    }
}

contains()底层依赖于一个equals()方法,equals()方法是Object类的中的方法,该法默认比较的是对象的地址值是否相同,必须要重写Object中的eqauls()方法,才能比较内容是否相同;
在自定义对象的类中重写Object中的equasl()方法,才能比较成员变量的值是否相同

public class ArrayListTest3 {

    public static void main(String[] args) {

        //创建一个ArrayList集合对象
        ArrayList array = new ArrayList() ;

        //2)创建学生对象
        Student s1 = new Student("高圆圆", 27) ;
        Student s2 = new Student("高圆圆", 20) ;
        Student s3 = new Student("邓超", 29) ;
        Student s4 = new Student("邓超", 25) ;
        Student s5 = new Student("黄晓明", 30) ;
        Student s6 = new Student("高圆圆", 27) ;

        //将学生对象添加到array集合中
        array.add(s1) ;
        array.add(s2) ;
        array.add(s3) ;
        array.add(s4) ;
        array.add(s5) ;
        array.add(s6) ;

        //3)创建一个新集合
        ArrayList newArray = new ArrayList() ;

        //遍历旧集合,获取迭代器对象
        Iterator it = array.iterator() ;
        while(it.hasNext()){
            Student s = (Student) it.next() ;

            //判断新集合中是否包含这些对象
            if(!newArray.contains(s)){
                //不包含的对象才能添加新集合
                newArray.add(s) ;
            }
        }

        //遍历新集合
        Iterator it2 = newArray.iterator() ;
        while(it2.hasNext()){
            Student s = (Student) it2.next() ;
            System.out.println(s.getName()+"---"+s.getAge());
        }
    }
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值