美文网首页
List集合的子类

List集合的子类

作者: 御都 | 来源:发表于2019-05-19 09:28 被阅读0次

    *【1各自的特点】
    ArrayList:底层数据结构为数组,查询快,增删慢,线程不安全,效率高;
    Vector:底层数据结构为数组,查询快,增删慢,线程安全,效率慢,一般不用;
    LinkedList:底层数据结构为链表,查询慢,增删快,线程不安全,效率高
    *2 ArrayList
    ArrayList集合继承了List的所有成员方法,没有新增,用法和List同
    *3 Vector
    Vector比继承体系历史更久远,有一些实现同样获取、遍历功能更复杂的方法,老版本用,新版本基本不用。

    package it.cast01;
    
    import java.util.Enumeration;
    import java.util.Vector;
    
    /*
     * Vector特有方法,Vector的出现比集合早
     * 添加
     * public void addElement(Object obj) ------add()
     * 获取
     * public Object elementAt(int index)返回指定下标的元素-----get()
     * 遍历
     * public Enumeration elements() 返回组件枚举,相当于迭代器-----iterator()
     * Enumeration提供2个方法:          
     *         boolean hasMoreElements()
     *         nextElement()
     */
    public class Test {
        public static void main(String[] args) {
            Vector v  = new Vector();
            v.addElement("hello");
            v.addElement("world");
            v.addElement("java");
            //2种遍历方式,普通for,迭代器
            for(int i=0;i<v.size();i++){
                String s = (String)v.elementAt(i);
                System.out.println(s);
            }
            System.out.println("----------");
            Enumeration en = v.elements();
            while(en.hasMoreElements()){
                String s = (String)en.nextElement();
                System.out.println(s);
            }
        }
    }
    
    • 4 LinkedList
      LinkedList中多了新增,删除,获取First&Last元素的方法
    /*添加
     * public void addFirst(Object e)
     * public void addLast(Object e)
     * 获取
     *public Object getFirst()
     *public Object void getLast()
     *移除
     *public Object removeFirst()
     *public Object removeLast()
    
     */
    
    • 5 练习
      5.1 删除ArrayList集合中重复的字符串元素
    package it.cast01;
    
    import java.util.ArrayList;
    import java.util.Iterator;
    
    /*
     * 去除ArrayList中重复元素
     */
    public class Test {
        public static void main(String[] args) {
            
            ArrayList alist = new ArrayList();
            alist.add("hello");
            alist.add("world");
            alist.add("hello");
            alist.add("hello");
            alist.add("java");
            alist.add("world");
            alist.add("java");
            //方法一,创建一个个新的集合存放不重复字符串
            /*ArrayList alist2 = new ArrayList();
            Iterator it = alist.iterator();
            while(it.hasNext()){
                Object s = it.next();
                if(!alist2.contains(s)){
                    alist2.add(s);
                }
            }
            System.out.println(alist2);*/
            //方法二 2层普通for循环,注意删除元素后,下标也要减一
            for(int i=0;i<alist.size();i++){
                String temp = (String)alist.get(i);
                for(int j=i+1;j<alist.size();j++){
                    String s = (String)alist.get(j);
                    if(s.equals(temp)){
                        alist.remove(j);
                        j--;
                    }
                }
            }
            System.out.println(alist);
        }
    }
    

    5.2 LinkedList模拟一个具有栈特点的集合类

    package it.cast01;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    
    /*
     * LinkedList定义一个集合,模拟栈的特点先进后出(压栈弹栈)
     */
    public class Test {
        public static void main(String[] args) {
            //创建集合对象
            LinkDemo demo = new LinkDemo();
            //创建集合对象,并向集合中添加元素
            demo.add("hello");
            demo.add("world");
            demo.add("java");
            
            while(!demo.isEmpty()){
                System.out.println(demo.get());
                }
            }
    }
    /**
     * 自定义栈集合
     * @author Administrator
     * version v1.0
     */
    class LinkDemo{
      private   LinkedList link ;
      
      public LinkDemo(){
          link = new LinkedList();
      }
        public void add(Object o){
            link.addFirst(o);
        }
        public Object get(){
            return link.removeFirst();
        }
        public boolean isEmpty(){
            return link.isEmpty();
        }
        
    }
    

    相关文章

      网友评论

          本文标题:List集合的子类

          本文链接:https://www.haomeiwen.com/subject/hskfzqtx.html