• 泛型,迭代器,LinkedList<E>


    1 <e>里面只能填类,不能用基本数据类型,不过integer 这样的的也行

    2在模板类(泛型类中)class demo<e>由于不知道e是那个,所有通常都是重写大家都有的toString()方法来调用

    泛型的作用主要是为了建立具有类型安全的数据结构

    如果没有泛型

    LinkedList 使用add方法的时候,由于所有类都是object的子类,所以都可以添加

    String s=(String) linkedList1.get(i)需要类型转换

    然而有了泛型就没有上面的问题,LinkedList<String>已经说明了都是String 

    测试代码

    package cgfg;
    
    public class Test{
        public static void main(String args[]){
            bb test1=new bb(1);
            bb test2=new bb(2);
            demo<bb> demo1=new demo<bb>();
            demo<bb> demo2=new demo<bb>();
            demo1.setE(test1);
            demo2.setE(test2);
            demo1.show();
            demo2.show();
            
        }
    }
    
    class demo<E>{
        E e;
        void setE(E a){
            e=a;
        }
        void show(){
            String s=e.toString();
            double a=Double.parseDouble(s)*2;
            System.out.println(a);
        }
    }
    
    class bb{
        double a;
        bb(double a){
            this.a=a;
        }
        public String toString(){
            return ""+a;
            
        }
    }
    View Code

    迭代器

    迭代器比手动遍历快,一般的迭代器用法

    Iterator<String> iterator1=list1.iterator();
    for(;iterator1.hasNext();){
        String s=iterator1.next();
    }

    完整测试

    package cgfg;
    
    import java.util.Iterator;
    import java.util.LinkedList;
    
    public class Test{
        public static void main(String args[]){
            LinkedList<String> list1=new LinkedList<String>();
            for(int i=0;i<60000;i++){
                list1.add(i+"");
            }
            Iterator<String> iterator1=list1.iterator();
            long start=System.currentTimeMillis();
            for(;iterator1.hasNext();){
                String s=iterator1.next();
            }
            long end=System.currentTimeMillis();
            System.out.println(end-start);
            start=System.currentTimeMillis();
            for(int i=0;i<list1.size();i++){
                String s=list1.get(i);
            }
            end=System.currentTimeMillis();
            System.out.println(end-start);
        }
    }
     
    View Code

    LinkedList<e>常用方法

    public boolean add(E e)
    public void add(index ,E e)//在一个位置添加
    public void clear()//全部清除
    public E remove(int index)//按位置删除
    public boolean remove(E e)//按值删除
    public E get(index)//得到该位置的值
    public int indexOf(E e)//得到该值的位置
    public E set(int a,E e)//把 a 位置的值改为 e
    public int size()//返回大小
    public E getFirst()
    public E getLast()
    public E removeFirst()
    public E removeLast()
    public Object clone()//返回一个克隆的链表
  • 相关阅读:
    SetConsoleScreenBufferSize 函数--设置控制台屏幕缓冲区大小
    GetConsoleScreenBufferInfo 函数--获取控制台屏幕缓冲区信息
    CONSOLE_SCREEN_BUFFER_INFO 结构体
    GetStdHandle 函数--获取标准设备的句柄
    设计模式之代理模式(Proxy Pattern)_远程代理解析
    设计模式之状态模式(State Pattern)
    设计模式之组合模式(Composite Pattern)
    设计模式之迭代器模式(Iterator Pattern)
    设计模式之模版方法模式(Template Method Pattern)
    设计模式之外观模式(Facade Pattern)
  • 原文地址:https://www.cnblogs.com/vhyc/p/6106825.html
Copyright © 2020-2023  润新知