集合:集合是指具有某种特定性质的具体或抽象的对象汇总而成的集体
java.util.Collection 集合
Collection是所有集合的顶级接口,规定了所有集合都必须具备的相关方法。
Collection存储的是value对象
list有序可重复
ArrayList
LinkedList
Vector
set无序无重复
Map存储的是key-value形式存在
key无序无重复,value无序可重复
集合与数组功能相似,用来保存一组元素,并提供了对元素操作的相关方法,使用更便捷。
Collection下面有两个常见的集合类型:
java.util.List:可重复集,并且有序
java.util.Set:不可重复集
Set集合不可以存放重复元素,而元素是否重复是依靠元素自身equals比较的结果而定。
所有的集合都在java.util包下
ArrayList
构造方法:无参数的构造方法,传递一个初始化容量的构造方法,传递一个Collection参数的构造方法
常用方法
boolean add(E e)
向当前集合中添加给定元素,成功添加后则返回true
int size()
返回当前集合的元素个数
boolean isEmpty()
判断当前集合是否为一个空集
集合不含有任何元素(size=0)
clea()
清空集合元素
boolean remove(E e)
删除集合元素
从集合中删除给定元素,删除的是集合中与给定元素equals比较为true的元素。
集合会挨着比较,找到一个可以删除的就停止了,即最多只能删除一个
重载方法:删除索引位置的元素remove(int i),删除指定对象元素remove(Object o)
如果想删除1索引位置的元素,调用remove(1);
如果想删除对象为1的对象,调用remove(new Integer(1));
addAll(Collection<? extends E> e)
将给定集合中的所有元素添加到当前集合中
boolean contains(E e)
判断当前集合是否包含给定元素,判断也是根据元素equals比较的。
boolean containsAll(Collection c)
判断当前集合是否包含给定集合的所有元素。
boolean removeAll(Collection c)
删除当前集合中与给定集合的共有元素(删交集)
Vector类
java.util包下的类
是ArrayList的早期版本(StringBuffer是早期,StringBuilder是后来版本)
Vector底层也是利用动态数组的形式存储
线程同步的,安全性高,效率低
扩容方式与ArrayList不同:默认扩容的是两倍,可以通过构造方法创建对象时进行修改
构造方法:无参数的构造方法,传递一个初始化容量的构造方法,传递一个Collection参数的构造方法,传递两个Integer类型的参数,第一个表式初始化容量,第二个表式每次扩容的长度
Stack类,栈
/**
* 栈结构
* 栈也是经典的数据结构之一
* 栈可以保存一组元素,但是存取必须遵循先进后出原则。
* 通常使用栈完成"后退"这样的功能
* @author Administrator *
*/
public class StackTest {
public static void main(String[] args) {
Stack<String> stack = new Stack<>();
//将某一个元素压入栈顶
stack.push("one");
stack.push("two");
stack.push("three");
stack.push("four");
stack.push("five");
//查看所有元素
System.out.println(stack);
//查看个数
System.out.println(stack.size());
//查看栈顶的一个元素,但不删除
System.out.println(stack.peek());
//判断是否为空
System.out.println(stack.isEmpty());
//查找给定元素在栈中的位置
System.out.println(stack.search("o"));
//将某一个元素从栈顶取出并删掉
String str = stack.pop();
System.out.println(str);
System.out.println(stack);
//遍历操作
for (String s : stack) {
System.out.println(s);
}
System.out.println(stack);
//用pop方法遍历栈
while (stack.size() > 0) {
String s = stack.pop();
System.out.println(s);
}
System.out.println(stack);
}
}
Queue队列
/**
* 队列
* 队列是经典的数据结构之一
* 队列可以保存一组元素,但是存取元素必须遵循先进先出。
* java.util.Queue 接口 * Queue继承自Collection,队列定义了存取元素的相关方法。
* 常用实现类:java.util.LinkedList
*/
public class QueueTest {
public static void main(String[] args) {
Queue<String> queue = new LinkedList<String>();
//入队操作,将元素添加到队列末尾
queue.offer("one");
queue.offer("two");
queue.offer("three");
queue.offer("four");
System.out.println(queue);
/* poll 出队操作
* 获取并删除当前队列的队首元素
*/
String str = queue.poll();
System.out.println(str);
System.out.println(queue);
/* * peek 引用队首元素 * 获取队首元素,但是不做删除操作 */
str = queue.peek();
System.out.println(str);
System.out.println(queue);
/* * 遍历队列 * 使用迭代器遍历后,元素还是在队列当中的。 */
for (String s : queue) {
System.out.println(s);
}
System.out.println(queue);
}
}
LinkedList
java.util包下的类
底层使用双向链表的数据结果形式存储
适合插入删除,不适合遍历
构造方法:无参数的构造方法,传递一个Collection参数的构造方法