Java学习第六章 集合(1) Collection接口

集合概述

Collection接口

List 接口及实现类

List接口集合迭代

Set 接口

Set 接口集合迭代

Map 接口

Collections类

Collection接口

● Collection 接口定义了存取一组对象的方法,其子接口 Set List 分别定义了
存储方式。
● List 中的数据有顺序 ( 添加顺序 ) 且可以重复。
● Set 中的数据不可以重复
List 接口及实现类
List接口继承了Collection接口,有三个实现的类
ArrayList
数组列表,底层采用数组存储。
LinkedList
链表列表
Vector
数组列表,添加同步锁,线程安全的

一.ArrayListDemo

ArrayList底层是数组结构,查询快,增删慢
package javacollection.list;

import java.util.ArrayList;

public class ArrayListDemo1 {
    public static void main(String[] args) {
        /*
        * ArrayList数组集合,默认可以存储Object类型
        * */
      /*  ArrayList arrayList = new ArrayList();
        arrayList.add(("a"));
        arrayList.add(1);
        arrayList.add(true);
        System.out.println(arrayList);//[a, 1, true]
        实际开发中,一般建议一个集合对象中最好只存储一种单一类型
        使用泛型语法,为集合指定一个类型
        */
        ArrayList<String> arrayList0 = new ArrayList();//默认10容量
        arrayList0.add("H");
        ArrayList<String> arrayList = new ArrayList();
        arrayList.add("a");
        arrayList.add("b");
        arrayList.add("c");
        arrayList.add("d");
        arrayList.add("a");
        arrayList.add(0,"e");//向指定位置添加元素
        arrayList.addAll(arrayList0);//把另一个集合数据添加进来

        //System.out.println(arrayList.remove(2));//根据所以删除对应的元素 并返回删除的元素
        //System.out.println(arrayList.remove("o"));//根据内容删除第一次匹配的元素,删除成功返回true,否则返回falsr
        //arrayList.clear();//清空集合元素
        System.out.println(arrayList.isEmpty());//判断集合是否为空 为空返回true
        System.out.println(arrayList.contains("b"));//判断集合中是否包含指定元素

        arrayList.set(1,"E");//替换指定位置的元素
        System.out.println(arrayList.get(3));//获取指定位置的元素
        System.out.println(arrayList.indexOf("a"));//获取指定元素的位置
        System.out.println(arrayList.size());//返回的是集合中实际添加的元素个数
        System.out.println(arrayList);
    }
}

二.LinkedListDemo

LinkedList 底层是链表结构,查询慢,增删效率高

package javacollection.list;

import java.util.LinkedList;

public class LinkedListDemo {
    public static void main(String[] args) {
        LinkedList<Integer> linkedList = new LinkedList<>();
                            linkedList.add(1);
                            linkedList.add(2);
                            linkedList.add(3);
                            linkedList.add(4);
                            linkedList.add(4);
                           /* //linkedList.add(1,3);像指定位置上加
                            linkedList.addFirst(20);
                            linkedList.lastIndexOf(10);*/
        System.out.println(linkedList.get(3));
        linkedList.set(2,40);
        //linkedList.contains()
        //linkedList.getFirst();
        //linkedList.getLast()
        System.out.println(linkedList.remove(2));
        System.out.println(linkedList.removeFirst());
        System.out.println(linkedList.removeLast());
        System.out.println(linkedList);
        LinkedList<String> linkedList1 = new LinkedList<>();

        /*
        * 栈和队列
        *
        * 队列:排队 从尾添加 从头
        * */
        linkedList1.addLast("张三1");
        linkedList1.addLast("张三2");
        linkedList1.addLast("张三3");
        linkedList1.addLast("张三4");

        System.out.println(linkedList1.removeFirst());
    }
}

三.VectorDemo

1. 线程安全
 

Vector 是线程安全的,它的大部分方法(如 addremoveget 等)都使用了 synchronized 关键字进行同步,这保证了在多线程环境下对 Vector 进行操作时不会出现数据不一致的问题

import java.util.Vector;

public class VectorExample {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        // 线程安全的添加元素操作
        vector.add("element"); 
    }
}
2. 动态数组
 

Vector 可以根据需要动态地调整其容量。当元素数量超过当前容量时,Vector 会自动增加其容量,以容纳更多的元素。

3. 随机访问
 

Vector 支持随机访问,通过索引可以快速地访问或修改指定位置的元素

import java.util.Vector;

public class VectorRandomAccess {
    public static void main(String[] args) {
        Vector<String> vector = new Vector<>();
        vector.add("apple");
        vector.add("banana");
        // 随机访问元素
        String element = vector.get(1); 
        System.out.println(element); 
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值