List 集合

白昼怎懂夜的黑 提交于 2019-11-27 03:13:22

【一、集合框架】

1.<集合框架简介>:

数据过多可以用对象进行存储,对象过多可以用集合来进行存储。
然而,存储数据的方式(数据结构)各有不同,所以存储的容器也就分为多种,从而,形成了集合框架这一体系。

2.<Collection方法>:

Collection 表示一组对象,这些对象称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。Collection方法
3.<迭代器>:

集合框架中提供了一个内部类专门操作集合中的元素,这个内部类就是迭代器。


【二、集合框架 List】

1.<ArrayList特有方法>

凡是可以操作下标的方法,都是该特有的方法。

	 如下:(index-下表)
	 
	  增
		  Add(index,element)
		  Add(index,Collection)
		  
	  删
		  Remove(index)
	  
	  改
		  Set(index,element)
	  
	  查
		  Get(index)
		  subList(from,to)
		  listIterator()
		  index(element)

2.<特有迭代器>

list集合所特有的迭代器:ListIterator是Iterator的子接口
在迭代时,不可以通过集合对象的方法操作集合中的元素;
因为会发生并发修改异常(ConcurrentModificationException)。
所以,在迭代时,只能通过迭代器来操作元素,课时Iterator的方法是有限的,Iterator只提供了判断、取出、删除的操作。如果想要有其他的操作,如添加、修改等,就需要使用其子接口ListIterator,该接口只能list集合的listIterator方法来获取。

3.<具体对象特点>

Collection
List 有序 元素可重复 该集合体系有索引
Set 无序 元素不可重复
Arraylist 数组结构 增删慢,查询快 有连续下标 线程不同步 增长因子为 1.5 10
vector 数组结构 增删改查都慢 有连续下标 线程同步 增长因子为 2 10
linkedlist 链表结构 增删快,查询慢 无连续下标


【三、集合框架 Vector】
枚举 枚举代码参考


【四、集合框架 LinkedList】

链表的数据结构

特有方法 :

	 addFirst(); 
	 addLast();   

获取元素但是不删除元素,如果集合中没有元素,会出现NoSuchElementException :

	getFirst();
	getLast();   

获取元素的同时会删除元素,如果集合中没有元素,会出现NoSuchElementException:

	 removeFirst(); 
	 removeLast();   

在jdk1.6出现了替代方法:

   	  offerFirst()
	  offerLast()   

	  peekFirst();
      peekLast();   

获取元素的同时会删除元素,如果集合中没有元素,会返回null

	pollFirst();
	pollLast(); 

由于是链表结构,当前节点能够记住上一个节点、以及下一个节点,所有有带First、last的方法存在。

<模拟队列以及堆栈>:

堆栈:先进后出 子弹夹
队列:先进先出 水管


【五、集合框架ArrayList】

1.<判断list 集合中元素是否相同>

依据的是元素的equals方法:

Contains调用了equals
Remove调用了equals

2.<字符串去重>

list中存储的是字符串,而string的equals方法就是比的字符串的值
引用数据类型去重
(以人为对象,有姓名、年龄属性)

思路:

  • 将原有的集合遍历

  • 遍历后的元素需要存放到新的集合中

  • 存放前做一个字符串的判断

步骤:

  • 1.实例化一个新集合

  • 2.遍历出之前集合里面的所有元素

  • 3.边遍历边判断,如果新集合里面的元素与旧集合里面的元素不相等, 就将该元素加入新集合。

底层源码:
集合list中remove方法调用时,调用了equals方法验证

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!