list集合家族

集合:集合是指具有某种特定性质的具体或抽象的对象汇总而成的集体

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参数的构造方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值