集合之List,Set。

List接口介绍及特点

  • list接口继承与Collection接口,list集合中允许有重复的元素,所有的元素都是以一种线性的方式进行存储的

  • list通过索引来访问集合中的元素

  • list集合中的元素是存储有序的

List接口中常用方法

  • List接口继承自Collection接口,所以list中有Collection接口中所有的方法

  • list中特有的方法

    • public void add(int index,E element):将指定元素element添加到指定位置

    • public E get(int index):获取指定索引位置上的元素

    • public E remove(int index):移除列表中指定元素,返回的是被移除的元素

    • public E set(int index,E element):用指定元素替换集合中指定位置的元素,返回值是更新前的元素

     1  public static void main(String[] args) {
     2         List list = new ArrayList();
     3         list.add("熊大");
     4         list.add("熊二");
     5         list.add("熊小小");
     6         //将 熊老三添加到第三个元素
     7         list.add(2,"熊老三");
     8         System.out.println(list);//熊老三
     9         //获取索引为3的元素
    10         Object o = list.get(3);
    11         System.out.println(o);//熊小小
    12         //移除熊老三
    13         Object remove = list.remove(2);
    14         System.out.println(remove);//熊老三
    15         //用光头强替换熊二
    16         Object o1 = list.set(1, "光头强");
    17         System.out.println(o1);//熊二
    18     }
    19 } 

List子类

  • ArrayList

    • ArrayList集合数据存储的结构是数组结构。元素增删慢,查询快。

  • LinkedList

    • LinkedList是存储结构是链表结构,元素增删快,查询相对来说慢一点。

      • public void addFirst(E e) :将指定元素插入此列表的开头。

      • public void addLast(E e) :将指定元素添加到此列表的结尾。

      • public E getFirst() :返回此列表的第一个元素。

      • public E getLast() :返回此列表的最后一个元素。

      • public E removeFirst() :移除并返回此列表的第一个元素。

      • public E removeLast() :移除并返回此列表的最后一个元素。

      • public E pop() :从此列表所表示的堆栈处弹出一个元素。

      • public void push(E e) :将元素推入此列表所表示的堆栈。

      • public boolean isEmpty() :如果列表不包含元素,则返回true

    public static void main(String[] args) {
            LinkedList<String> list =  new LinkedList();
            //添加元素
            list.addFirst("光头强");
            list.addFirst("吉吉国王");
            list.addFirst("小猴子");
            System.out.println(list);//小猴子, 吉吉国王, 光头强
            //获取第一个元素
            String first = list.getFirst();
            System.out.println(first);//小猴子
            //获取最后一个元素
            String last = list.getLast();
            System.out.println(last);//光头强
            //删除第一个元素
            String removeFirst = list.removeFirst();
            System.out.println(removeFirst);//小猴子
            //删除最后一个元素
            String removeLast = list.removeLast();
            System.out.println(removeLast);//光头强
            //判断集合是否为空
            while (!list.isEmpty()){//判断集合是否为空
                System.out.println(list.pop());//弹出集合中栈顶的元素---吉吉国王
            }
    ​
            System.out.println(list);//[]
        }

     

Set接口及其介绍

  • set接口继承于Collection接口,包含所有Collection接口的方法

  • set集合中存储的元素无序

  • set集合中的元素是不可重复的

set子类
  • HashSet集合

    • hashSet是set接口的一个子类,所存储的元素是不可以重复的,并且是无序的。

    • hashSet是根据对象的hash值来确定元素存储的位置,因此具有良好的存取和查找性能,保证元素唯一的方式是依赖于:hashcode()和equals( )方法

     1 public static void main(String[] args) {
     2         HashSet<String> set = new HashSet<>();
     3         set.add(new String("NBA"));
     4         set.add("MLB");
     5         set.add("NBL");
     6         set.add("CBA");
     7         set.add("NBA");
     8         for (String s : set) {
     9             System.out.println(s);
    10         }
    11     }

    输出结果,只有一个NBA:

    MLB
    CBA
    NBL
    NBA

     

  • HashSet集合存储数据的结构(哈希表)

  

hashSet存储原理

  

  • LinkedHashSet

    • hashSet可以保证元素不重复,但是元素的存取是无序的,为了解决这个无序问题,我们可以才去LinkedHashSet来解决这个问题。

    • LinkedHashSet是链表和哈希表组合的一个数据存储结构

     1 public static void main(String[] args) {
     2         Set<String> set = new LinkedHashSet<>();
     3         set.add("MLB");
     4         set.add("NBL");
     5         set.add("CBA");
     6         set.add("NBA");
     7         for (String s : set) {
     8             System.out.println(s);
     9         }
    10     }
    11 12 输出结果:
    13     MLB
    14     NBL
    15     CBA
    16     NBA

     

关与list,set的知识就先写这么多了,具体实际应用还是希望大家灵活运用~~

posted @ 2018-09-20 17:49  Aimaybe  阅读(285)  评论(0编辑  收藏  举报