• java基础28 单例集合Collection下的List和Set集合


    单例集合体系:

    ---------| collection  单例集合的根接口
    --------------|
    List  如果实现了list接口的集合类,具备的特点:有序,可重复       注:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的
    ------------------| ArrayList  ArrayList底层维护了一个object数组的实现的。(线程不安全),特点:查询速度快,增删速度慢。有序,可重复
    ------------------| LinkedList  LinkedList底层是使用链表结构实现的,线程不安全,特点:查询速度慢,增删速度快。有序,可重复
    ------------------| Vector(了解即可)  底层也是维护一个Object数组的实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低
    --------------| Set  如果实现了set接口的集合类,具备的特点:无序,不可重复     注:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的
    ------------------| HashSet  底层是用于一个哈希表支持的。线程不安全,特点:存储速度块
    ------------------| TreeSet  底层是使用红黑树(二叉树)数据结构实现的,线程不同步(即线程不安全),不能在多线程中共享,但可以使用synchroinzedMap()
    方法来实现同步。特点:会对元素进行排序存储(按自然顺序

    双例集合体系:

    ----------| Map  双例集合的根接口。如果是实现了Map接口的集合类,具备的特点:存储的数据都是以键值对形式存在的,键不可重复,值可以重复
    --------------| HashMap  底层是基于哈希表实现的,HashMap允许键和值为null,线程不安全,特点:存储速度块
    --------------| TreeMap  基于红黑数(二叉树)数据结构实现的,线程不同步(即线程不安全),特点:会对元素经行排序存储
    --------------| HashTable(了解即可)   线程安全


    一、List 集合

    1.1、List接口中的特有方法

      添加:
          add(E, e) :将指定的元素追加到此列表的末尾
          add(int index, E element) :将指定的元素插入此列表中的指定位置
          addAll(Collection<? extends E> c):按指定集合的迭代器返回的顺序,将指定集合中的所有元素添加到此(集合)列表的末尾。

      获取:
          get(int index): get方法获取元素
          indexOf(Object o): 找出指定元素第一次出现在集合中,指定的索引值,如果此列表不包含元素,则返回-1。
          lastIndexOf(Object o):返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
          subList(int fromIndex, int toIndex):截取 包前不包后

      修改:
          subList(int fromIndex, int toIndex):截取 包前不包后。
          add(int index, E element) :将指定的元素插入此列表中的指定位置;如果插入到已有元素的索引值下,则相当于替换原有的数据。
          set(int index, E element):用指定的元素替换此列表中指定位置的元素

    1.2、List集合具备的特点

        有序,可重复性  

        注意:集合中的有序不是指自然顺序,而是指添加进去的顺序与出来的顺序是一致的

    1.3、List接口中方法具备的特点

        操作的方法都存在索引值,只有list下面的集合才具备索引值;其他接口下面的集合类都没有索引值

    1.4、实例

     1 package com.zn.collection;
     2 
     3 import java.util.ArrayList;
     4 import java.util.Iterator;
     5 import java.util.List;
     6 
     7 /**
     8  * @author DSHORE / 2018-5-16
     9  *
    10  */
    11 public class Demo5 {
    12     public static void main(String[] args) {
    13         //假设原有的List集合有这四调数据
    14         List<Object> list = new ArrayList<Object>();
    15         list.add("张三");
    16         list.add("李四");
    17         list.add("王五");
    18         list.add("赵六");
    19         
    20         //添加
    21         list.add(1,"老七");
    22         System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六];说明“老七”把“李四”替换了
    23         List<Object> list2 = new ArrayList<Object>();
    24         list2.add("安其拉");
    25         list2.add("亚瑟");
    26         list2.add("赵云");
    27         list.addAll(list2);//把list2集合中的数据添加到list集合中
    28         System.out.println(list);//返回值:[张三, 老七, 李四, 王五, 赵六, 安其拉, 亚瑟, 赵云]
    29         
    30         //获取
    31         System.out.println("get方法根据索引值获取到的元素:"+list.get(2));//返回值:李四
    32         for (int i = 0; i < list.size(); i++) {//集合用size();数组用length。
    33             //集合用get(i);数组用get[i]。
    34             System.out.print(list.get(i)+",");//返回值:张三,老七,李四,王五,赵六,安其拉,亚瑟,赵云,
    35         }
    36         System.out.println();//换行
    37         System.out.println(list.indexOf("赵六"));//返回值:4
    38         System.out.println(list.indexOf("六六"));//返回值:-1    说明:list集合列表中没有该数据,所以返回值为-1
    39         System.out.println(list.lastIndexOf("安其拉"));//返回值:5
    40         
    41         //修改
    42         System.out.println(list.subList(1,4));//返回值:[老七, 李四, 王五]   说明:subList()截取函数;包前不包后
    43         list.set(1,"二狗子");
    44       /*//方式1:
    45         for (int i = 0; i < list.size(); i++) {
    46             System.out.print(list.get(i)+",");//返回值:张三,二狗子,李四,王五,赵六,安其拉,亚瑟,赵云,
    47         }*/
    48         //方式2
    49         Iterator<Object> it =  list.iterator();
    50         while (it.hasNext()) { //hasNext()和next()都是迭代器(iterator)下面的方法
    51             Object o = it.next();
    52             System.out.print(o+",");//返回值:张三,二狗子,李四,王五,赵六,安其拉,亚瑟,赵云,
    53         }        
    54     }
    55 }

     

    二、Set 集合

    Set集合与collection集合使用的方法几乎没啥区别。

     2.1、Set集合具备的特点

        无序,不可重复性

         注意:集合中的无序不是指自然顺序,而是指添加元素进去的顺序与元素出来的顺序是不一致的

    2.2、List集合与Set集合的区别

    相同点:

        Set和List一样,也继承于Collection,是集合的一种。

    不同点:

        Set内部实现是基于Map的,所以Set取值时不保证数据和存入的时候顺序一致,并且不允许空值,不允许重复值。

     2.3、实例

     1 package com.dhb.collection;
     2 
     3 import java.util.HashSet;
     4 import java.util.Set;
     5 
     6 /**
     7  * @author DSHORE / 2018-5-18
     8  *
     9  */
    10 public class Demo12 {
    11     public static void main(String[] args) {
    12         Set set=new HashSet();
    13         set.add("王五");
    14         set.add("李四");
    15         set.add("张三");
    16         System.out.println("添加成功了吗:"+set.add("李四"));//返回值:false
    17         System.out.println(set);//返回值:[张三, 李四, 王五]
    18 
    19     }
    20 }

    原创作者:DSHORE

    作者主页:http://www.cnblogs.com/dshore123/

    原文出自:http://www.cnblogs.com/dshore123/p/9041806.html

    欢迎转载,转载务必说明出处。(如果本文对您有帮助,可以点击一下右下角的 推荐,或评论,谢谢!

  • 相关阅读:
    一天快速入门Python语法基础之类与继承
    一天快速入门Python语法基础之函数
    一天快速入门Python语法基础之用户输入和if while语句
    一天快速入门Python语法基础之字典
    一天快速入门Python语法基础之操作列表
    应用Maven管理SringMvc+MyBaties登录功能的实现
    在eclipse中使用Maven以及HelloWorld的实现
    C++和Java实现基本的选择排序和常见错误
    Maven的安装和配置以及HelloWorld的实现
    POJ--3311--Hie with the Pie(暴力枚举+floyd)/(状态压缩DP+floyd)
  • 原文地址:https://www.cnblogs.com/dshore123/p/9041806.html
Copyright © 2020-2023  润新知