2021-05-20

泛型与集合

感觉自己这块一直是模模糊糊的,希望一点一点的理,能够弄明白吧

首先使用泛型类声明对象

这种是你创建的类名后 多了一对"",必须要用具体的类型替换“<>”中的泛型

Cone.java

public class Cone<E> {
    double height;
    E bottom;
    public Cone (E b){
        bottom = b;
    }
    public void setHeight(double h){
        height = h;
    }
    public double computerVolume(){
        String s=bottom.toString();
        double area=Double.parseDouble(s);
        return 1.0/3.0*area*height;
    }
}

Rect.java

public class Rect {
    double sideA,sideB,area;
    Rect(double a,double b){
        sideA = a;
        sideB = b;
    }
    public String toString(){
        area=sideA*sideB;
        return ""+area;
    }
}

Circle.java

public class Circle {
    double area,radius;
    Circle (double r){
        radius = r;
    }
    public String toString(){
        area = radius*radius*Math.PI;
        return ""+area;
    }
}

main.java

public class Example15_1 {
    public static void main(String agrs[]){
        Circle circle = new Circle(10);//创建对象,然后在构造方法中把值10传入
        Cone<Circle> coneOne = new Cone<Circle>(circle);//这边就把刚刚的类和对象放入
        coneOne.setHeight(16);//设置自己类中的变量
        System.out.println(coneOne.computerVolume());//然后计算,每个的类都重写了toString()方法的
        Rect rect = new Rect(15,23);
        Cone<Rect> coneTwo = new Cone<Rect>(rect);
        coneTwo.setHeight(98);
        System.out.println(coneTwo.computerVolume());
    }
}

链表

import java.util.LinkedList;
public class demo03 {
    public static void main(String[] args) {
        LinkedList<String> mylist = new LinkedList<String>();
        mylist.add("how");
        mylist.add("are");
        mylist.add("you");
        System.out.println(mylist.toString());
    }

}

链表是无序的

LinkedList 和 ArrayList 一般都使用接口回调

例如 List list = new LinkedList();
这样创好了链表,也可以使用List的方法
List list = new ArrayList();
在项目中好像都一般都是使用的ArrayList数组表,但我是新手,我自己也不太清楚,哈哈哈,反正肯定都有自己的用处

散列映射

HashMap<K,V>泛型类

例如
HashMap<String,Student> hashtable = HashSet<String,Student>();
这里的HashSet在底层实则就是用HashMap去创建的对象

//HashSet底层用来存储元素的结构,实际上使用HashMap来存储
private transient HashMap<E,Object> map;
 
//HashMap中的value值,HashSet只关注key值,所以所有的value值都为Object对象
private static final Object PRESENT = new Object();
 
 
//HashSet的无参构造,直接创建了一个HashMap对象
public HashSet() {
        map = new HashMap<>();
}
 
//指定初始化容量和负载因子
public HashSet(int initialCapacity, float loadFactor) {
        map = new HashMap<>(initialCapacity, loadFactor);
}
 
//给定初始化容量
public HashSet(int initialCapacity) {
        map = new HashMap<>(initialCapacity);
}
 
public HashSet(Collection<? extends E> c) {
        map = new HashMap<>(Math.max((int) (c.size()/.75f) + 1, 16));
        addAll(c);
}

猜你喜欢

转载自blog.csdn.net/please93/article/details/117092859