Java 集合框架1

一、集合框架

        1.概念

Java 集合框架1_第1张图片

二、Collection接口

        Collection接口之下有两个子接口:List接口/Set接口
        List接口是用来处理有序的单列数据,可以有重复的元素。
        Set接口是用来处理无序的单列数据,没有重复的元素,重复的元素算一个 

三、List接口

        List接口有两个子类:ArrayList类和LinkedList类

        1.ArrayList类:

                i.用来处理有序的单列数据,可以有重复的元素。
                ii.添加的元素会自动扩展。
                iii.动态数组结构,查询速度快,添加删除速度慢

                构造方法

//ArrayList类是List接口的子类
//ArrayList是处理有序数据列的,可以有重复数据,是动态数组结构,查询速度快,但添加和删除速度慢
//ArrayList的构造方法有三种
//1.ArrayList() 指定一个初始容量为10的空列表
ArrayList arrayList = new ArrayList();
//2.ArrayList(Collection) 将通过Collection实现的子类转换为ArrayList类
LinkedList linkedList = new LinkedList();
ArrayList arrayList1 = new ArrayList(linkedList);
//3.ArrayList(int initialCapacity) 自定义初始容量
ArrayList arrayList2 = new ArrayList(20);

                实例方法 

//ArrayList常用方法
//1.boolean add(Object obj)向ArrayList中添加元素,添加至末尾
arrayList.add("ceshi");
arrayList.add("9823");
arrayList.add(false);
arrayList.add(823.2);
arrayList.add("kjkasd");
arrayList.add(9823);
//2.boolean contains(Object obj)是否包含指定元素
System.out.println(arrayList.contains(823));
//3.Object get(int index) 获取指定位置的元素值
System.out.println(arrayList.get(3));
//4.int size() 获取列表长度
System.out.println(arrayList.size());
//5.int indexOf(Object obj) 获取第一次出现的位置
System.out.println(arrayList.indexOf("ceshi"));
//6.int lastIndexOf(Object obj) 获取最后一次出现的位置
System.out.println(arrayList.lastIndexOf("kjkasd"));
//7.boolean isEmpty() 查看列表是否为空
System.out.println(arrayList.isEmpty());
//8.Object remove(int index) 根据位置删除元素,返回的是被删除的元素
System.out.println(arrayList.remove(3));
//9.boolean remove(Object obj) 根据元素值删除元素,返回是布尔类型,
//如果有相同的数据,删除的是第一次出现的位置
System.out.println(arrayList.remove("9823"));
System.out.println(arrayList);
//10.Object set(int index,Object obj)修改指定位置的值,返回的是被修改的值
System.out.println(arrayList.set(1,true));
System.out.println(arrayList);
System.out.println("---------------普通for循环-----------------------");
//ArrayList循环
//普通for循环
for (int i=0;i

        2.LinkedList类:

                i.用来处理有序的单列数据,可以有重复的元素。
                ii.添加的元素会自动扩展。
                iii.双向链表结构,查询速度慢,添加删除速度快

                构造方法

//LinkedList是处理有序列表的
//LinkedList 不能有重复数据,即重复数据只计算一次,是双向链表结构,查询速度慢,但添加和删除速度快
//LinkedList 构造方法
//LinkedList() 构造一个空列表,没有初始容量
LinkedList linkedList = new LinkedList();
//LinkedList(Collection) 将Collection类的子类转换为LinkedList类对象
ArrayList arrayList = new ArrayList();
LinkedList linkedList1 = new LinkedList(arrayList);

                实例方法

//1.boolean add(Object obj)添加一个元素
linkedList.add("shangan");
linkedList.add(23);
linkedList.add("男");
linkedList.add(true);
linkedList.add("男");
//2.int size()列表长度
System.out.println(linkedList.size());
//3.boolean contains(Object obj) 是否包含某个元素
System.out.println(linkedList.contains("nv"));
System.out.println(linkedList);
//        //4.Object get(int index) 得到指定位置上的元素值
//        System.out.println(linkedList.get(2));
//        System.out.println(linkedList);
//        //5.int indexOf(Object obj) 返回第一次出现的位置
//        System.out.println(linkedList.indexOf("男"));
//        //6.int lastIndexOf(Object obj) 返回最后一次出现的位置
//        System.out.println(linkedList.lastIndexOf(true));
//        //7.Object remove(int index) 根据位置移除指定位置的元素,返回被移除的元素
//        System.out.println(linkedList.remove(2));
//        System.out.println(linkedList);
        //8.boolean remove(Object obj) 根据元素值移除元素,返回布尔值,如果有重复,则移除第一次出现的
System.out.println(linkedList.remove("男"));
System.out.println(linkedList);
//9.boolean isEmpty() 判断是否为空
System.out.println(linkedList.isEmpty());
//10. Object set(int index,Object obj) 替换指定位置的元素,返回被替代的元素
System.out.println(linkedList.set(2,false));
System.out.println(linkedList);

//因为LinkedList是双向链表结构,所以比ArrayList多了一组对第一个和最后一个元素处理的方法
//1.addFirst()在列表开头插入
linkedList.addFirst("start");
//2.addLast()在列表最后插入
linkedList.addLast("last");
System.out.println(linkedList);
//3.Object getFirst() 得到列表第一个元素
System.out.println(linkedList.getFirst());
//4.Object getLast() 得到列表最后一个元素
System.out.println(linkedList.getLast());
//5.Object remove() 删除列表第一个元素,返回被删除的元素值
System.out.println(linkedList.removeFirst());
//6.Object remove() 删除列表最后一个元素,返回被删除的元素值
System.out.println(linkedList.removeLast());
System.out.println(linkedList);

//遍历循环
//普通for循环
System.out.println("----------------普通for循环--------------------");
for (int i=0;i

四、ArrayList 和 LinkedList 的区别是什么?

        相同点

ArrayList 和 LinkedList 都是List接口的子类,间接实现Collection接口
Collection接口处理单列数据的接口,自然ArrayList 和 LinkedList都是处理单列数据的类

         不同点

ArrayList  LinkedList
动态数据的存储结构     双向链表的存储结构
添加/删除数据慢,查询数据快 添加/删除快,查询数据慢
没有提供对第一个和最后一个元素的操作方法 提供对第一个和最后一个元素的操作方法
有10个单位的初始容量 没有初始容量
扩容的步长是0.5倍原容量,扩容方式是利用数组的复制 没有扩展机制

           

你可能感兴趣的:(java,开发语言)