0


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<arrayList.size();i++){
     Object object = arrayList.get(i);
     System.out.println(object);
}
System.out.println("----------------for循环增强型------------------------");
//for循环增强型
for (Object object:arrayList){
     System.out.println(object);
}
System.out.println("-----------------迭代器遍历-----------------------");
//迭代器遍历
Iterator iterator = arrayList.iterator();
while (iterator.hasNext()){
       Object object = iterator.next();
       System.out.println(object);
}
    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<linkedList.size();i++){
      Object object = linkedList.get(i);
      System.out.println(object);
}
//增强for循环
System.out.println("----------------增强for循环--------------------");
for (Object object:linkedList){
      System.out.println(object);
}
System.out.println("----------------迭代器循环--------------------");
//迭代器循环
Iterator iterator = linkedList.listIterator();
while (iterator.hasNext()){
       Object object = iterator.next();
       System.out.println(object);
}

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

    相同点

ArrayList 和 LinkedList 都是List接口的子类,间接实现Collection接口
Collection接口处理单列数据的接口,自然ArrayList 和 LinkedList都是处理单列数据的类
不同点
ArrayList LinkedList动态数据的存储结构 双向链表的存储结构添加/删除数据慢,查询数据快添加/删除快,查询数据慢没有提供对第一个和最后一个元素的操作方法提供对第一个和最后一个元素的操作方法有10个单位的初始容量没有初始容量扩容的步长是0.5倍原容量,扩容方式是利用数组的复制没有扩展机制

标签: java 开发语言

本文转载自: https://blog.csdn.net/zqm_1994/article/details/132567807
版权归原作者 Miz8 所有, 如有侵权,请联系我们删除。

“Java 集合框架1”的评论:

还没有评论