栈:先进后出,后来先出
堆:先进先出
,后来后出
定义泛型类:就是把<>放在类上
一个大写字母代表一个类型。
定义泛型【类】格式:
public class 类名<E>{}
定义泛型【方法】格式
public <T> void show(T t){}
把明确类型推出到了调用方法上。
定义泛型【接口】格式
public interface 接口名<T>{
public abstract void show(T t);
}
【实现】泛型接口格式
第一种:在实现泛型接口时明确泛型的类型。
public class 类名 implements 泛型接口<String>{
public void show(String s);
}
第二种:在类上继续加上泛型
public class 类名<T> implements 泛型接口<T>{
public void show(T t){}
}
泛型的通配符【?】
-----------------------例子1----------------
class Animal{}
class Dog extends Animal{}
class Pag{}
//向下限定
ArrayList<? extends Animal> al=new ArrayList<Animal>();
ArrayList<? extends Animal> a2=new ArrayList<Dog>();
ArrayList<? extends Object> a3=new ArrayList<Pag>();
ArrayList<? extends Object> a4=new ArrayList<Object>();
//<? extends Object>表示只有继承了Object类的子类才能实例化该泛型
//向上限定
ArrayList<? super Animal> aal=new ArrayList<Animal>();
ArrayList<? super Object> aa2=new ArrayList<Object>();
ArrayList<? super Dog> aa3=new ArrayList<Dog>();
ArrayList<? super Dog> aa4=new ArrayList<Animal>();
ArrayList<? super Dog> aa5=new ArrayList<Object>();
//<? super Animal>表示只有自己或者父类才能实例化该类。
------------------------end--------------------------
【枚举类型】
关键字enum
定义格式: enum 类名{}
----------------------------------例子知识的---------------------------
/**
* 自定义一个枚举类
* 枚举要注意的细节:
*
1.枚举类也是一个特殊的类。
*
2.枚举值默认的修饰符是public static final.
*
3.枚举值的数据类型,是枚举值所属类的类型,枚举值是指向了本类的对象。
*
4.枚举类的默认构造方法修饰符为private
*
5.枚举值必须要位于枚举类的第一行语句
*
6.枚举类可以定义自己的成员变量和成员函数。
*
7.枚举类可以自定义构造函数,但是构造函数的修饰符必须是private
*
8.枚举类可以存在抽象的方法,但是枚举值必须要实现抽象的方法。
*
*/
enum Sex{
man,woman,man_01("男");//枚举值
//
man_02("女");//错误,枚举值必须要位于枚举类的第一行语句
//public static final Sex man=new Sex(); 相当于man
String value;//定义枚举类的成员变量
private Sex(){}
//构造函数
private Sex(String str){
this.value=str;
}
//定义枚举类的成员函数
public void getValue(){
System.out.println(this.value);
}
}
-------------------------------------------------列子结束end---------------------------------
-------------------------------------------------例子2 枚举类中的抽象方法----------------------------------------
/**
* 枚举类,定义其抽象方法
*
枚举值可以有抽象方法,但枚举值必须要实现抽象方法。
* @author Administrator
*
*/
enum Man{
Sex{
public void Man_run(){
}
},
Sex_man("男"){
public void Man_run(){
System.out.println("我是枚举类的抽象方法。");
}
};
public String value;
//构造方法
private Man(){}
//构造方法
private Man(String str){
this.value=str;
}
//抽象方法
public abstract void Man_run();
}
---------------------------------------------------------end结束----------------------------------------------------------
/**
* 复习集合
* 单列集合
* -------------| Collection 单列集合的根接口
* -----------------| List 如果是实现了List接口集合类具备的特点:有序,可重复。
* ---------------------| ArrayList 底层使用Object数组实现的。特点:查询速度快,增删慢。
* ---------------------| LiskedList 底层是使用了链表数据结构实现的。特点:查询慢,增删块。
* ---------------------| Vector
底层使用Object数组实现的,实现与ArrayList是一样,只不过是线程安全的,操作效率低。
*
* -----------------| Set 如果是实现了Set接口集合具备的特点:无序,不可重复
* ---------------------| HashSet 底层使用的是哈希表具备的特点:无序,不可重复。
* ---------------------| TreeSet 底层使用二叉树实现。
*
*
* 双列集合:
* -------------| Map (只需要把Map接口的方法全部练习一遍即可)
* ----------------| HashMap 底层使用的是哈希表实现的。
* ----------------| TreeMap 底层使用二叉树实现
* ----------------| HashTable
*
*/

提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
ios 中的堆和栈 堆和栈js
堆和栈是数据存储的一种结构,因此我们首先从数据类型入手分析一下js数据存储的结构。一、js的数据类型为了更好容易的理解堆和栈,首先来复习一下js中的数据类型。在js中数据类型主要分为以下两大类:
ios 中的堆和栈 数据结构 引用类型 引用变量 堆和栈