collection集合--List

匿名 (未验证) 提交于 2019-12-02 23:56:01

List

list(有序、可重复)

List接口的子类:





List及其子类的存储的特点:

堆栈



队列:

数组类型的数组集合(ArrayList):

1.查找元素快(通过索引可以快速的找到指定位置的元素;因为有下标所以查询快)


查找元素慢(因为没有下标,得通过地址一个一个找);想查找某个元素,需要通过连接的节点,依次向后查找指定元素
2.增删速度快:因为新增或者删除一个元素直接改变元素链接的下一个地址就行;

.ArrayList与LinkedList对比:

。ArrayList是数组类型的集合:查询速度快,增删速度慢,所以多用ArrayList集合存储经常需要查询的数据;多用于查询业务。

LinkedList是链表类型的集合:增删速度快,查询速度慢,所以多用LinkedList进行存储业务



List:

:向集合末尾处,添加指定的元素

add(int index, Object e):向集合指定索引处,添加指定的元素,原有元素依次后移

remove(Object e):将指定元素对象,从集合中删除,返回值为被删除的元素

:将指定索引处的元素,从集合中删除,返回值为被删除的元素

:将指定索引处的元素,替换成指定的元素,返回值为替换前的元素

:获取指定索引处的元素,并返回该元素

public static void main(String[] args) {          List<String> list=new ArrayList<String>();//因为List是接口不能直接new对象需要借助多态,借助子类ArrayList进行new对象  //指定插入元素          list.add("a");          //指定位置插入元素          list.add(0,"b");//(指定位置,下标,插入的元素)          list.add("c");          //遍历          for(int i=0;i<list.size();i++)          {//因为List具有下标,可以用老式for进行循环取值          System.out.println(list.get(i));          }          //删除指定下标的元素,         String str= list.remove(2);//
 

LinkedList:

LinkedList是基于链表的,它是一个双向链表,每个节点维护了一个prev和next指针。同时对于这个链表,维护了first和last指针,first指向第一个元素,last指向最后一个元素。LinkedList是一个无序的链表,按照插入的先后顺序排序,不提供sort方法对内部元素排序。

Add元素:

  LinkedList提供了几个添加元素的方法:addFirst、addLast、addAll、add等,时间复杂度为O(1)。

Remove元素:

  LinkedList提供了几个移除元素的方法:removeFirst、removeLast、removeFirstOccurrence、remove等,时间复杂度为O(1)。

Get元素:

  根据给定的下标index,判断它first节点、last直接距离,如果index<size(数组元素个数)/2,就从first开始。如果大于,就从last开始。这个和我们平常思维不太一样,也许按照我们的习惯,从first开始。这也算是一点小心的优化吧。

遍历

在类集中提供了以下四种的常见输出方式:

1)Iterator:迭代输出,是使用最多的输出方式。

2)ListIterator:是Iterator的子接口,专门用于输出List中的内容。

3)foreach输出:JDK1.5之后提供的新功能,可以输出数组或集合。

4)for循环

代码示例如下:

for的形式:for(int i=0;i<arr.size();i++){...}

foreach的形式: for(int i:arr){...}

iterator的形式:
Iterator it = arr.iterator();
while(it.hasNext()){ object o =it.next(); ...}

LinkedList:public static void main(String[] args){ LinkedList<String> arr=new LinkedList<String>(); arr,addFrist("a"); .addFrist()是把元素添加为第一个元素的意思,                    但是后来调用的.addFrist()方法的元素会替代之前用的或者现有的第一个元素 arr.addFrist("b"); arr.addLast("c"); .addLast()是把元素添加为最后一个元素的意思,                   但是后来调用的.addLast()方法的元素会替代之前或者现有的最后一个元素 arr.addFrist("d"); for(String s:arr){system.out.println(s)}//结果d,b,a,c

移除第一个位置的元素

out.println( arr.getFirst());//b

out.println(arr.getLast());// c

 

(!arr.isEmpty()){ //判断集合是否为空

system.out.println(arr.getLast());

 

 得到最后一个元素.getLast():system.out.println(arr.getLast()); //判断集合中是否有元素:system.out.println(arr.isEmpty());结果是false,isEmpty()是判断集合是否为空是否没有值,所以是false如果没有值就返回true 

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