java-泛型

1.泛型程序设计
将类型参数化以达到代码复用提高软件开发工作效率的一种数据类型。
不需要对对象进行强制类型的转换。

import java.util.ArrayList;

public class Fanxing {
public static void main(String[] args)
{
    ArrayList co1=new ArrayList();
    co1.add(1);
    co1.add(2);
    co1.add("sulei");
    String t1=(String)co1.get(1);//此处需要进行强制类型转换,编译运行时候出错
    System.out.println(t1);
    //此处会提示出现安全的问题
    ArrayList<String> co2=new ArrayList<String>();
    co2.add("shursulei");
    //co2.addAll(2);
    //使用泛型之后,此处必须使用<>中的string类型
    }
}

ArrayList中添加了一个类型参数,string.
当使用get方法调用的时候不需要进行强制类型的转换。
2.简单的泛型类
在java中使用E表示集合的元素类型,K,V表示关键字键和值

编写一个泛型类
public class Pair<T>{
    //T类型变量
    private T first;
    private T second;
    public Pair()
    {}
    public Pair(T first,T second)
    {

        this.first= first;
        this.second= second;
    }

    public T getFirst() {
        return first;
    }
    public void setFirst(T first) {
        this.first = first;
    }
    public T getSecond() {
        return second;
    }
    public void setSecond(T second) {
        this.second = second;
    }

}
测试类
public class PairTest {
public static void main(String[] args)
{
    String[] words={"f","c","b","e","g"};
    Pair<String>  test1=ArrayAlg.minmax(words);
    System.out.println(""+test1.getFirst());
    System.out.println(""+test1.getSecond());
}
}
class ArrayAlg
{

    //泛型方法
    public static Pair<String> minmax(String[] a) {
        // TODO Auto-generated method stub
        if(a==null||a.length==0) return null;
        String max=a[0];
        String min=a[0];
        for(int i=0;i<a.length;i++)
        {
            if(min.compareTo(a[i])>0) min=a[i];
            if(max.compareTo(a[i])<0) max=a[i];
        }
        return new Pair<>(min,max);//返回构造函数Pair
    }
    }

3.泛型的内部原理
泛型是提供给Javac编译器使用的,可以限定集合的输入类型
java虚拟机无法知道参数类型;

    ArrayList<String> co2=new ArrayList<String>();
    co2.add("shursulei");
    //co2.addAll(2);
    //使用泛型之后,此处必须使用<>中的string类型
    ArrayList<String> co3=new ArrayList<>();
    System.out.println(co3.getClass()==co2.getClass());

输出的结果为true;原因是编译器自带类型说明的集合时会除掉类型的信息
4.泛型数组列表
ArrayList straff=new ArrrayList<>();
1.straff.add()//添加操作
内部数组满了情况下,如果调用add的方法将自动创建一个更大的数组。
如果已经清楚或能够估算出可能存储的元素数量就可以在填充数组之前调用ensureCapacity(100)方法:
straff.ensureCapacity(100);
另外还可以把初始容量传递给ArrayList构造器
ArrayList straff=new ArrayList<>(100);
2.straff.size();判断数组列表的大小
一旦能够确认数组列表的大小不再发生变化,就可以调用trimToSize方法。将存储区域的大小调整为当前元素数量所需要的存储空间数目。垃圾回收器将回收多余的存储空间。
3.访问数组列表元素(修改或访问)
set()和get()方法
straff.set(i,harry)//set只能替换已经存在的
add是添加新元素

    ArrayList<String> aList=new ArrayList<>(100);
    aList.add(1,"shursulei");
    System.out.println(aList);
public class ArrayList_Test {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<Employee> straff=new ArrayList<>();
        straff.add(new Employee("张三", 2000, 1996, 12, 11));
        straff.add(new Employee("李四", 2000, 1996, 12, 11));
        straff.add(new Employee("王五", 2000, 1996, 12, 11));
        for(Employee e:straff)
        {
            e.raiseSalary(5);
        }
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值