泛型与集合
感觉自己这块一直是模模糊糊的,希望一点一点的理,能够弄明白吧
首先使用泛型类声明对象
这种是你创建的类名后 多了一对"",必须要用具体的类型替换“<>”中的泛型
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);
}