您的位置:首页 > 编程语言 > Java开发

JAVA基础知识点(十三)--单列集合中的List接口

2016-11-05 15:41 344 查看
一、 集合的体系:

 ----------| Collection 单列集合 的根接口

 --------------|  List  如果是实现了List接口的集合类,该集合类具备的特点:有序,可重复。

 --------------|  Set   如果是实现了Set接口的集合类,该集合类具备的特点: 无序,不可重复。

有序:集合的有序不是指自然顺序,而是指添加进去的顺序与元素出来的顺序是一致的。

List接口中特有的方法具备的特点: 操作的方法都存在索引值。    

只有List接口下面的集合类才具备索引值。其他接口下面的集合类都没有索引值。

 

二、List接口中特有方法:

         添加

                  add(intindex, E element) 把元素添加到集合中的指定索引值位置上

                  addAll(intindex, Collection<? extends E> c) 把c的元素添加到此集合指定索引值的位置上

         获取:

                  get(intindex)

                  indexOf(Objecto)  找出指定元素第一次出现在集合中 的索引值

                  lastIndexOf(Objecto) 找出指定元素最后一次出现在集合中的索引值

                  subList(intfromIndex, int toIndex) 指定开始与结束的索引值截取集合中的元素

         修改:

                  set(intindex, E element) 使用指定的元素替换指定索引值位置的元素

         迭代

                  listIterator()

 */

package cn.itcast.list;

import java.util.ArrayList;

import java.util.List;               

public class Demo2 {

         publicstatic void main(String[] args) {

                  Listlist=  new ArrayList();

                  list.add("狗娃");

                  list.add("狗剩");

                  list.add("铁蛋");  //把元素添加到集合的末尾处。

                  list.add("狗娃");

             //添加方法

                  list.add(1,"赵本山"); // 把元素添加到集合中的指定索引值位置上。

                  Listlist2 = new ArrayList();

                  list2.add("本山");

                  list2.add("小沈阳");

                  list.addAll(2,list2);//把list2的元素添加到list集合指定索引值的位置上。                

//获取的方法

                  System.out.println("get方法获取元素:"+list.get(1));//根据索引值获取集合中的元素

                  使用get方法遍历集合的元素:

                  for(int i = 0; i < list.size() ; i++) {

                          System.out.print(list.get(i)+",");

                  }

                  System.out.println("找出指定元素第一次出现在集合中的索引值:"+ list.indexOf("本山"));

                  System.out.println("找指定的元素最后一次出现在集合中的索引值:"+list.lastIndexOf("狗娃"));

                  ListsubList = list.subList(1, 3); //指定开始与结束的索引值截取集合中的元素。

                  System.out.println("子集合的元素是:"+subList);

                  list.set(3,"赵本山"); //使用指定的元素替换指定索引值位置的元素。

                  System.out.println("集合的元素:"+list);

         }

}

 

/*

迭代

迭代器在变量元素的时候要注意事项:在迭代器迭代元素的过程中,不允许使用集合对象改变集合中的元素个数,如果需要添加或者删除只能使用迭代器的方法进行操作。

如果使用过了集合对象改变集合中元素个数那么就会出现ConcurrentModificationException异常。        

 迭代元素 的过程中: 迭代器创建到使用结束的时间。

listIterator()

ListIterator特有的方法:

         添加:

                  hasPrevious()  判断是否存在上一个元素。

                  previous()    当前指针先向上移动一个单位,然后再取出当前指针指向的元素。

                  next();  先取出当前指针指向的元素,然后指针向下移动一个单位。

---------------------------  

                  add(Ee)   把当前有元素插入到当前指针指向的位置上。

                  set(Ee)   替换迭代器最后一次返回的元素。

*/

package cn.itcast.list;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

public class Demo3 {

         publicstatic void main(String[] args) {

                  Listlist = new ArrayList();

                  list.add("狗娃");

                  list.add("狗剩");

                  list.add("铁蛋");

                  list.add("美美");

                 

                  ListIteratorit = list.listIterator(); //返回的是一个List接口中特有的迭代器

                  /*System.out.println("有上一个元素吗?"+it.hasPrevious());

                  System.out.println("获取上一个元素:"+it.previous());

                  it.next();

                  System.out.println("获取上一个元素:"+it.previous());

                  while(it.hasNext()){

                          it.next();

                  }

                  while(it.hasPrevious()){

                          System.out.println("元素:"+it.previous());

                  }

                  it.next();

                  it.next();

                  it.add("张三");

                  */

                  it.next();

                  it.next();

                  it.set("张三");

                  System.out.println("集合的元素:"+list);          

         }

}

 

三、List接口的实现类

--------------------| ArrayList  

--------------------| LinkedList

--------------------| Vector(了解即可)底层也是维护了一个Object的数组实现的,实现与ArrayList是一样的,但是Vector是线程安全的,操作效率低。

ArrayList 底层是维护了一个Object数组实现 的, 特点: 查询速度快,增删慢。

什么时候使用ArrayList: 如果目前的数据是查询比较多,增删比较少的时候,那么就使用ArrayList存储这批数据。  比如 :高校的 图书馆

ArrayList 特有的方法:

         ensureCapacity(intminCapaci上ty)  如有必要,增加此ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。

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

笔试题目:使用ArrayList无参的构造函数创建一个对象时, 默认的容量是多少? 如果长度不够使用时又自增增长多少?

         ArrayList底层是维护了一个Object数组实现 的,使用无参构造函数时,Object数组默认的容量是10,当长度不够时,自动增长0.5倍。

 

 

LinkedList底层是使用了链表数据结构实现的,  特点: 查询速度慢,增删快。。

Linkedlist特有的方法:

         1:方法介绍

                     addFirst(E e) 把元素添加到集合的首位置上

                                   addLast(Ee) 把元素添加到集合的末尾处。

                 

                                   getFirst()获取集合中首位置的元素

                                   getLast()获取集合中末尾的元素

                                  

                                   removeFirst()删除集合中的首位置元素并返回

                                   removeLast()删除集合中的末位置元素并返回

        

         2:数据结构

                                   1:栈 (1.6)  : 主要是用于实现堆栈数据结构的存储方式。

                                            先进后出

                                            push()将该元素插入此集合的开头处。

                                            pop()移除并返回集合中的第一个元素

                                   2:队列(双端队列1.5): 主要是为了让你们可以使用LinkedList模拟队列数据结构的存储方式。

                                            先进先出

                                            offer()  将指定元素添加到此列表的末尾(最后一个元素)。

                                            poll()   删除集合的首元素:

                                           

         3:返回逆序的迭代器对象     

                          descendingIterator()   返回逆序的迭代器对象

*/

 

public class Demo8 {

        

         publicstatic void main(String[] args) {

                  LinkedList list= new LinkedList();

                  list.add("张三");

                  list.add("李四");

                  list.add("王五");             

                  list.push("狗娃");   //将该元素插入此集合的开头处。

                  System.out.println("删除集合的首元素:"+list.pop());// 移除并返回集合中的第一个元素

                  list.offer("狗剩");

                  System.out.println("删除集合的首元素:"+list.poll());

        

                  System.out.println("集合中的元素:"+list);

                  */    

                  Iterator  it = list.descendingIterator();

                  while(it.hasNext()){

                          System.out.println(it.next());

                  }

         }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: