集合的子接口

第六篇

复习:

一、集合概念:是一个用于存储多个对象的容器(对象).容器内的对象就是元素,元素都是引用类型。

PS:容器内存储的都是对象的地址。

二、与数组的区别?

相同点:都是容器(数据结构),用来存储多个数据的,

不同点:数组:可以存储基本数据类型

        集合:只能存储引用数据类型

三、集合框架中包含多种接口,抽象类,实现类等,用此来满足我们所需要的用于存储数据的数据结构。 

四、Collection与Collections的区别

    Collection:是集合的父接口,定义了集合框架中常用的抽象方法

    Collections:是集合的工具类,定义了很多用于操作集合对象的工厂/工具方法

五、子接口:List,Set,Queue

List:存储此接口实现类的数据,有序,可重复。

有序:存储时与添加的顺序相关。有对应的索引/下标标记位置。从0开始

重复:存储的元素可以是同一个,也可以是对象内容相同不同对象根据元素的equals方法进行判断

常用方法(序)  

E set(int index,E newElement)

使用新元素newElement替换下标index上的元素,返回原元素。

boolean remove(int index):

移除此集合中下标为index上的元素  

List<E> subList(int fromIndex,int endIndex):

截取此集合中的一部分,即截取子集,从fromIndex到endIndex包前不包后

PS:此方法在堆中不会产生新的集合对象。

变量引用的父集的一部分。修改子集,会影响父集        

int lastIndexOf(Object obj):

返回此集合指定元素obj最后一次出现的下标。找不到返回-1.              

六、数组与集合之间的转换

       1、集合转数组

      Object[] toArray()

      E[]  toArray(E[] e);

       2、数组转集合

      List Arrays.asList(数组参数);

注意:数组转成的集合,不能进行增删操作,否则会出现运行时异常.可以进行替换操作,但是会数组变量有影响。

如果想要成功进行增删操作,可以将元素,存入新的集合中。

七、 Iterator:迭代器接口

    (1)迭代器的作用使用用来遍历集合元素。是一个接口。Collection接口提供一个方法 Iterator iterator()

    (2)Collection的实现类使用内部类定义了迭代器子类。

    (3)迭代器提供了统一的方法,用于遍历集合元素。

    常用方法

     boolean hasNext():判断集合中是否有下一个元素

     E next():取出集合中的下一个元素  

     void remove():在使用迭代器对集合进行遍历时,不能使用集合的移除方法移除集合的元素。必须使用迭代器自己提供的移除才行。

    增强for循环-foreach循环

     for(元素类型 变量名:要遍历的集合或者数组){

     }

     与经典for循环的区别

     (1)增强for循环中无法使用下标。

     (2)经典for循环中可以使用下标。跟下标有关的逻辑,随便写。

八、List的三个实现类

    (1)ArrayList底层是基于动态数组的数据结构。是有存放顺序的。          

    (2)LinkedList底层是基于双链表的数据结构。每一个存储单元,都涉及到其他两个引用。

优缺点: 在执行get()/set()时,ArrayList的效率高,LinkedList需要移动指针,效率低

              在增加/删除操作时,LinkedList效率高,ArrayList效率低(需要扩容,移动元素)

ps:当然,在元素的数量大的情况下,区别才明显

(3)Vector:是一个比较古老的集合类型,线程安全,但是效率特别低。虽然安全,也不建议使用。

九、接口Queue

Queue也是Collection的子接口,是一种数据结构,队列。

队列:通常都是一端进(offer),另一端出(poll)。

进出原则:FIFO

因为队列要经常进行增删操作,所以使用Linkedlist实现了Queue接口. 

常用方法

boolean offer(E e):元素从队尾进入队列。

E poll():从队首移除元素,返回被移除的元素。当队列没有元素时返回null.

E peek(): 查看队首元素,不移除。队列中没有元素时,返回null.       

注意: 为了避免移除队列的队首时出现null,我们最好先查看队首是不是null.

Deque:是一个Queue的子接口,实现的是双端队列的数据结构。

双端队列:两端都可以进,也都可以出。 

E offerFirst();

E offerLast();

E pollFirst();

E pollLast();

E peekFirst();

E peekLast();

栈的数据结构:先进后出:FILO

我们可以将双端队列的一端进行禁止操作。另一端进或出,即Stack               

void push(E e):将元素 e推进栈中

E pop():将栈中的最顶端的元素,移除。

String[] arr1={"a","abc","1","10"};

//将数组转换成集合

      List<String> list=Arrays.asList(arr1);

 

Crtl+f  查找

Shift+Alt +s快捷键

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值