凡是Tree的都是自然排序,所以存储的对象类型必须有compare方法, compare遇到null报错
由链表保证元素有序(输入顺序)
由哈希表保证元素唯一
栈 先进后出,后进先出,进栈出栈
队列 先进先出,后进后出
数组 查找快,增删慢,线程不安全
链表 查找慢,增删快
树 查找慢,增删快
(先序遍历,中序遍历,后序遍历)
哈希表 键值对结构,通过key那value
数组的元素是单链表
数组:
1. 数组可以存储基本数据类型和对象
2. 数组长度固定
3. 数组在定义时必须指定数组元素类型
4. 数组中无法直接获取实际存储的元素个数,只知道数组长度
5. 数组是有序的分配连续空间
集合:
7. 集合只能存储对象(可以以包装类的形式存储基本数据类型)
8. 集合长度可以动态改变
9. 集合中元素默认为Object类型
10. 集合中可以直接通过size()获取实际存储的元素个数
11. 集合有多个存储方式适应不同的场合
12. 集合以接口和类的形式存在,具有封装、继承、多态等特性
Iterator<String> iterator = colection.iterator();
while (iterator.hasNext()) {
Object obj = iterator.next();
System.out.println("遍历结果:" + obj);
}
Queue
Queue<String> queue = new LinkedList<String>();//FIFO
// 一些队列有大小限制,加入一个新项,多出的项就会被拒绝,当出现异常时,add方法抛出异常
// 而offer则返回的是false,就是啥事也没有,也不抛异常,也没有添加成功!
queue.offer("b"); // add a element
queue.offer("c"); // add a element
queue.add("a"); // add a element
System.out.println(queue.peek()); //get head element 在队列为空时,而peek()返回null
System.out.println(queue.element()); //get head element 在队列为空时,element()抛出一个异常
System.out.println(queue);
System.out.println(queue.remove()); // 移除一个元素 空集合调用时抛出异常
System.out.println(queue.poll()); // 移除一个元素 空集合调用时不抛出异常,只是返回 null
System.out.println(queue);