首页 > 代码库 > 泛型,迭代器,LinkedList<E>

泛型,迭代器,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()//返回一个克隆的链表

 

泛型,迭代器,LinkedList<E>