Java刷题常用数据结构

752 阅读2分钟

image.png

图源runoob,空心箭头+实线是继承关系,空心箭头+虚线是实现关系(实现接口)

image.png 注意如果要为Java基本数据类型使用下面的数据结构,那么需要使用基本数据类型对应的包装类。

Boolean类   -boolean类型
Character类 -char类型
Byte类      -byte类型
Short类     -short类型
Interger类  -int类型
Long类      -long类型
Float类     -float类型
Double类    -double类型

Integer类

//Integer类型返回 int
int intValue();

Stack<>类,属于java.util包,继承自Vector<>类。 可用的方法包括:

//测试Stack是否是空的
boolean empty();
//源码是直接调用Vector类的addElement()方法,并返回item
E push(E item);
//弹出栈顶对象,并返回该对象
E pop();
//返回栈顶对象
E peek();
//计算给出的对象距离栈顶的距离(目前没用过)
int search(Object o); 

以及从Vector类继承的方法

//声明一个栈
Stack<Integer> s=new Stack<>();
s.push(10);

目前的问题: 包括Stack类是否可以直接存入int等基本数据类型,而不用包装为Integer等对象? 实测不行。 LinkedList类实现了Queue和List接口,但是这两个接口的一些方法并没有被LinkedList实现,为何(不是说实现接口的类必须要实现接口的所有方法)? 类是否可以继承其实现的接口的方法(不是default方法)?

Vector<>类,属于java.util包,常用的方法包括:

//向vector尾部添加指定的元素
boolean add(E e);
//返回当前vector的容量
int capacity();
//移除vector中的所有元素
void clear();
//返回该vector的克隆
Object clone();
//返回true,如果该vector包括指定的元素,否则false
boolean contains(Obeject o);
//测试vector是否是空的
boolean isEmpty();
//等等其他方法

Deque<>接口,属于java.util包,继承自Queue<>接口。LinkedList类实现了Deque接口,因此我们可以把LinkedList当成Deque来用。实现了双端队列功能,两端都可以入队出队。

int size();

//普通队列是队尾入队,队头出队
boolean add(E e);
void addFirst(E e);  //从对首入队
void addLast(E e);  //从队尾入队

E poll();
E pollFirst();  //从队头出队
E pollLast();  //从队尾出队

E peek();
E peekFirst();  //返回队头元素
E peekLast();  //返回队尾元素

有序表TreeMap

//实例化
TreeMap<T1, T2> treeMap = new TreeMap<>();

java.util.Collection 是一个集合接口(集合类的一个顶级接口) :它提供了对集合对象进行基本操作的通用接口方法。Collection接口在Java 类库中有很多具体的实现。Collection接口的意义是为各种具体的集合提供了最大化的统一操作方式,其直接继承接口有List与Set。

Collections类:Collections则是集合类的一个工具类/帮助类,其中提供了一系列静态方法,用于对集合中元素进行排序、搜索以及线程安全等各种操作。

public static void swap(List<?> list, int i, int j)  //交换下标为i和j的元素
List<Integer> tmp=new LinkedList<>();
Collections.swap(tmp, i, first);