集合--Collection接口

目的:

      在 Java 中为了方便用户操作各个数据结构,引入了类集的概念,有时候就可以把类集称为 java对数据结构的实现

      类集中最大的几个操作接口:Collection、Map、Iterator,这三个接口是使用的最重点的接口。

      所有的类集操作的接口或类都在 java.util 包中。

    

Collection接口:

     Collection 接口是在整个 Java 类集中保存单值的最大操作父接口,里面每次操作的时候都只能保存一个对象的数据。

     定义:

          public interface Collection <E> extends Iterable <E>

    方法:

 

       在开发中不会直接使用 Collection 接口。而使用其操作的子接口:List(允许重复)、Set(不允许重复

 

List接口:

     List 是 Collection 的子接口,里面的所有内容都是允许重复的。

     定义:

         public interface List <E> extends Collection <E>

    方法:

 

 

常用的实现类有如下几个: · ArrayList(95%,线程不安全)、Vector(4%,线程安全)、LinkedList(1%)

 

ArrayList类:

 

    ArrayList 是 List 接口的子类,此类的定义如下:(使用数组结构)

       public class ArrayList <E> extends AbstractList <E> implements List <E>, RandomAccess,Cloneable, Serializable

   方法:

      add(int index, E element)                                       将指定元素插入到指定位置中

      add()                                                                      将指定元素插入到末尾

      get()                                                                       返回指定位置的元素

      addAll​(int index, Collection<? extends E> c)        将指定集合插入到指定位置

      addAll​(Collection<? extends E> c)                       将指定集合插入到末尾

      clear()                                                              清除列表中所有的元素

      clone()                                                              返回ArrayList实例的浅表副本,([100, 300, 250, 400])

      contains(Object O)                                                判断列表中是否包含此元素

      ensureCapacity(int minCapacity)                      如果有必要,增加ArrayList实例的容量

      indexof(Object O)                                                  返回指定元素在列表中第一次出现的索引,如没有返回-1

      lastIndexOf(Object o)                                            v返回指定元素在列表中最后一次出现的位置,如没有返回-1

      isEmpty()                                                               判断列表中是否为空

      remove(int index)                                             根据指定下标删除元素

      remove(Object O)                                            根据指定元素删除第一个匹配项

      removeAll​(Collection<?> c)                                   删除指定几个的所有元素

      removeIf​(Predicate<? super E> filter)                   删除指定条件的元素

      removeRange​(int fromIndex, int toIndex)              删除指定范围的元素

      retainAll​(Collection<?> c)                                      仅保列表中包含在指定集合中的元素

      set​(int index, E element)                                     将指定下标替换为指定元素

      size()                                                               返回列表的元素数

      subList​(int fromIndex, int toIndex)                       返回指定范围的视图

      toArray()                                                              返回数组

      toArray​(T[ ] a)                                                      返回包含此列表中所有元素的数组(

      trimToSize()                                                         将ArrayList实例的大小调整为当前列表的大小

 

Vector 类:

 

    定义:使用数组结构,增删慢查找快

         public class Vector extends AbstractList implements List, RandomAccess, Cloneable,Serializable

   方法:同ArraList一样,只不过多了关于增量的内容

         Vector​(int initialCapacity, int capacityIncrement) 初始长度,以及增量

LinkedList 类

     使用双向链表结构,增删快,查找慢,可以看为栈和队列

  定义:

      public class LinkedList extends AbstractSequentialList implements List, Deque, Cloneable,Serializable

  方法:

        基本比前两个相同,它提供了几个特殊方法

                  addFirst(E e)        在列表开头插入元素

                  addLast(E e)        在列表末尾插入元素

                  removeFirst()  删除并返回列表第一个元素

                  removeLast()  删除并返回列表最后一个元素

                  push(E e) 压栈

                  pop() 弹栈

                  getFirst()      获得第一个元素

                  getLast()           获得最后一个元素

Iterator 类

   Iterator 迭代器,获取列表中每个元素

     方法:

                  hasNext()      是否有下一个

                  next()             指针下移

                  remove()  删除元素

ListIterator类

    除上面方法还有

         previous() 指针上移

         set(E e) 将当前指针指向元素替换为指定元素

 

ArrayList<Integer> x = new ArrayList<>();
Iterator<Integer> iterator = x.iterator();
while (iterator.hasNext()){
    int y = iterator.next();
    System.out.println(y);
}

forEach

       增强for循环,用于迭代数组或集合

        语法:

           for(数据类型 变量名:集合或名称){}

 

Set 接口

        不包含重复元素的集合,方法基本上还是与 Collection接口相同

        如果想输出其中元素,则使用iterator方法迭代或者使用toArray方法转成数组

    HashSet子类:

          散列存放的存储方式(哈希表)(内置HashMap)

          无法保证顺序是存储顺序

         方法:没什么特殊的方法

    TreeSet 子类:

           采用有序的二叉树存储(基于TreeMap)

          基本类型可以进行排序

          如果要想对自定义类型(对象)进行排序,则必须在 Person 类中实现 Comparable 接口。

          重写toCompare()方法 放回负数,this小,返回正数,this大

          方法:都也差不多

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王某人@

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值