集合

数据结构:
代表的就是数据的存储方式;
常见的数据接口:
线性表、链表、栈、队列、树、图、哈希表;
栈:先进后出,后出先进;
队列:先进先出,后进后出;
链表:把多个节点连接起来;
节点:分为数据域和指针域,数据域代表的是要存储的数据,指针域代表的是下一个数据对应的位置,或者是上一个数据对应的位置;
 
ArrayList、LinkedList、Vector的区别:
ArrayList:
底层: 数组
线程不安全:执行效率高,有安全隐患;
LinkedList:
底层: 链表
线程不安全:执行效率高,有安全隐患;
Vector:
底层: 数组
线程安全: 执行效率低,安全;
 
LinkedList:
public void addFirst(Object obj):把给定的元素添加的集合的第一个位置;
public void addLast(Object obj):把给定的元素添加到集合的最后一个位置;
public Object getFirst():获取该集合中第一个位置的元素;
public Object getLast():获取该集合汇总最后一个位置上的元素;
public Object removeFirst():删除集合中第一个位置的元素,返回被删除的元素;
public Object removeLast():删除集合中最后一个位置的元素,返回被删除的元素;
 
Vector:
public void addElement(E obj) --- add(Object obj);
public Object elementAt(int index) --- get(int index);
public Enumeration<E> elements() ---- iterator() Enumeration枚举类型;
public void removeAllElements() --- clear();
public boolean removeElement(Object obj) --- remove(Object obj);
public void removeElementAt(int index) --- remove(int index);
public void setElementAt(E obj, int index) --- set(Object obj,int index);
 
Enumeration: 枚举(迭代器对象) :
boolean hasMoreElements() : 判断是否有下一个元素 --- hasNext();
Object nextElement() : 获取下一个元素 --- next();
 
增强for循环:
格式:
for (数组元素的类型或者集合元素的类型 变量名 : 需要遍历的数组名 或者 集合名) {
变量名,代表着每一个数组元素 或者 代表着每一个集合元素
}
 
泛型:
作用:约束存储元素的数据类型;
使用的范围:类上、接口上、方法上;
 
泛型类:
class Tool<T> {
public void method(T t){
code....
}
}
泛型方法:泛型方法需要定义在返回值类型的前面;
class Tool<T> {
//普通方法
public <K> K method(K num){
code....
return num;
}
//静态方法
public static <Q> Q function(Q q){
code...
return q;
}
}
泛型接口:
interface Tool<K> {
public abstract void method(K num);
}
//直接将接口中的泛型实现
class Demo implements Tool<Integer> {
public void method(Integer num){
code...
}
}
在类上不明确泛型的具体类型,在创建对象的时候在明确类型:
class Demo<Q> implements Tool<Q> {
public void method(Q num){
code...
}
}
泛型通配符:
当使用泛型的时候,又不明确定义什么类型的泛型合适,这个时候可以定义一个通用的泛型类型?
泛型的边界:
上边界:?extends E;
? 代表着数据类型可以是E数据类型本身或者是E数据类型的子类;
下边界: ? super E:
? 代表着的数据类型可以是E数据类型本身或者是E数据类型的父类;
泛型使用的注意事项:
1: ArrayList<Person> list = new ArrayList<Girl>();
报错, 要求左右两边泛型的数据类型必须一致
2:泛型是一个编译期的约束,当编译成.class文件后, 该.class文件中没有泛型的约束;
3:jdk7 : 菱形泛型;
 
Stack: 集合 :
底层: 栈;
方法:
public E push(E item):把项压入堆栈顶部;
public boolean empty():测试堆栈是否为空;
public E peek():查看堆栈顶部的对象,但不从堆栈中移除它;
public E pop():移除堆栈顶部的对象,并作为此函数的值返回该对象;
public int search(Object o):返回对象在堆栈中的位置,以 1 为基数;
原文地址:https://www.cnblogs.com/yuhudashen/p/7886206.html