zoukankan      html  css  js  c++  java
  • java合集框架第一天

                                                                                                                               

    文章目录

    1 collection接口

    2  list接口

    3 Iterator

    4 Vertor

    5  ArrayList

    6 LinkedList

       


           主体部分:

           (1)collection

              Java中有数字包装类(Inteager),字符包装类(String) . 其实也有对象的包装类----用来装对象的(通常是一类对象).这样做的好处是:使用方法和属性便于管理对象。

             这种包装类叫做容器。 就想我们的水杯一样,结果都有一定的差异。同样容器由于数据结构的不同,也有很多类型。他们的父类是collection接口,里面有不少方法。

             这些是容器共有的方法,比如:add(),remove();  collection又可以分为二大类。该文章介绍list

                collection               

                    |_list

                    |_set

           容器的特点

                   (1)只能存储对象,不能是基本数据类型

                   (2)长度不是固定的---比数组灵活

                   (3)都有自己的数据结构

        (2)List:

            表面上看"列表", 它也是一个接口,他的子类都是List系类的容器(集合)

            List 接口方法和collection差不多,多出来的就是list体系的特点:通过index来访问列表。比如:add(int index,Object o);remove(int index);//ect

            list----|_Vector

                     |_ArrayList

                     |_LinkedList

                     |_其他

        (3)Iterator-----迭代器

            作用:用来访问集合中的对象,也是一个接口。里面只有3个方法,很重要。hasNext(),next(),remove();

              注意这句话:每一个容器都有一个实现迭代器的内部类。而且控制通过iterator()获取实体对象。

               ListIterator 是Iterator子接口,同样的道理,这里多出来的也就是通过index访问元素的方法。可以crud,效果很猛。

             待会重点说明怎么使用。

         (4) Vector

            说了那么多接口,终于来个具体的容器。

            Vector数据结构----数组类型----访问速度较慢(crud)---被ArrayList取代

           淘汰了,不多说了。

            看代码:

            

      public static void main(String[] args) {
    		  Vector  v=new Vector();
                  //添加对象---String---二种方法都可以。
    		  v.add("abc1");
    		  v.addElement("abc2");
    		  v.add("abc3");
    		
                    //使用迭代器遍历。访问对象
    		  for( Iterator it=v.iterator(); it.hasNext();)
    		  {
    			  System.out.println(it.next());
    		  }
    
                   
    
    }
    

      

             (5)ArrayList

                数据结构--数组

                特点:访问速度快,查询较慢,和Vector相似,所以取代Vector

                 用法:

               

    public static void main(String[] args) {
           List list=new ArrayList();
            list.add("abc1");
            list.add("abc2");
            list.add("abc3");
            Iterator it=list.iterator();
               while(it.hasNext()){
                Object obj=it.next();
                 if(obj.equals("abc2"))
                 list.add("abc0");//出现异常
    } }

       上面出现异常,不能在迭代器遍历是为容器增加object。此时ListIterator作用出来,使用这个迭代器add(E e)就没有问题啦

         

    public static void main(String[] args) {
           List list=new ArrayList();
            list.add("abc1");
            list.add("abc2");
            list.add("abc3");
               ListIterator it=list.listIterator();
               while(it.hasNext()){
                   Object obj=it.next();
                    if(obj.equals("abc2"))
                         it.add("abc0");
                    }
     
          System.out.println(list);  //[abc1, abc2, abc0, abc3]
        }
    

      说白了就是重写了List里面的方法+自己的一些方法。

              (6)LinkedList

                数据结构---列表

                      方法丰富:

                       getFirst();

                       get(index);

                       getLast();

                       removeFirst();

                       set(int index, E element); //替换

                           等

               code: 使用LinkedList模拟栈-----先进先出

                            

    package cn.com.List;
    
    import java.util.LinkedList;
    
    public class ListDemo {
    
    	public static void main(String[] args) {
    	    //使用LinkedList 模仿栈和队列.
    	    //创建栈,
    		  
    		  myStack stack=new myStack();
    		  //进栈
    		  stack.add("abc1");
    		  stack.add("abc2");
    		  stack.add("abc3");
    		  //出栈
    		  while(stack.hasNext()){
    			  System.out.println(stack.get());
    		  }
    		
    		 System.out.println("____________________________");
    		 
    		 //创建队列   和上面类似
    } //栈 public static class myStack{ private LinkedList list=null; public myStack(){ list=new LinkedList(); } public Boolean add(Object o){ list.addFirst(o); return true; } public Object get(){ return list.removeFirst(); } public Boolean hasNext(){ if(list.size()==0)return false; else return true; } } //队列 public static class Queue{ private LinkedList list=null; public Queue(){ list=new LinkedList(); } public Boolean add(Object obj){ list.addFirst(obj); return true; } public Object get(){ return list.removeLast(); } public Boolean hasNext(){ if(list.size()==0)return false; else return true; } } }

      list系类介绍中三个主要的成员,下节说说set系类

         注: 简单总结,更多函数看看 api

                 

     

           

            

         

  • 相关阅读:
    新手上路:Laravel-控制器基础
    新手上路:Laravel-控制器基础
    新手上路:Laravel-控制器基础
    js限制文本框input只能输入数字
    66条财富语录
    赢在中国 第3讲思维篇
    赢在中国 ---对周宇的分析
    赢在中国 第二季 语录
    《赢在中国》第三季观后感
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/huang-1995/p/5886747.html
Copyright © 2011-2022 走看看