首页 > 学院 > 开发设计 > 正文

Java从零开始学二十一(集合List接口)

2019-11-14 23:04:12
字体:
来源:转载
供稿:网友
java从零开始学二十一(集合List接口)一、List接口List是Collection的子接口,里面可以保存各个重复的内容,此接口的定义如下:public interface List<E> extends Collection<E>二、List接口的扩展方法
No.方法类型描述
1public void add(int index, E element)普通在指定位置增加元素
2public boolean addAll(int index, Collection<? extends E> c)普通在指定位置增加一组元素
3E get(int index)普通返回指定位置的元素
4public int indexOf(Object o)普通查找指定元素的位置
5public int lastIndexOf(Object o)普通从后向前查找指定元素的位置
6public ListIterator<E> listIterator()普通为ListIterator接口实例化
7public E remove(int index)普通按指定的位置删除元素
8public List<E> subList(int fromIndex, int toIndex)普通取出集合中的子集合
9public E set(int index, E element)普通替换指定位置的元素
三、List接口的常用子类 —— ArrayList和LinkedListArrayList实现了长度可变的数组,在内存中分配连接的空间,遍历和随机访问元素的效率比较高LinkedList采用链表存储方式。在插入、删除元素时效率比较高四、ArrayList例子
package com.pb.demo1;public class Person {   PRivate String name;   private int age;   public Person() {}public Person(String name, int age) {    this.name = name;    this.age = age;}public String getName() {    return name;}public void setName(String name) {    this.name = name;}public int getAge() {    return age;}public void setAge(int age) {    this.age = age;}  }

package com.pb.demo1;import java.util.ArrayList;import java.util.List;public class PersonArrayListTest {    public static void main(String[] args) {        /*         * 创建多个Person对象并赋值         */         Person p1 = new Person("张三",21);         Person p2 = new Person("李四",22);         Person p3 = new Person("王五",23);         //创建ArrayList       List<Person> personlist=new ArrayList<Person>();              //为集合添加对象       personlist.add(p1);       personlist.add(p2);       personlist.add(p3);       //输出集合的长度       System.out.println("集合长度:"+personlist.size());       //遍历集合for循环       for(int i=0; i<personlist.size();i++){           System.out.println("姓名:"+personlist.get(i).getName()+"年龄:"+personlist.get(i).getAge());       }       //使用索引添加       Person p4 = new Person("赵六",24);       /*        * 使用索引添加时必须知道长度才可以正确增加,如果添加的索引大于最后一个下标+1,        * 编译可以通过但运行时会报错        * 例如:如查长度为3,下标是从0开始到2,这时使用索引添加值索引可以是(0~3)都可以,但是不能是4        */       personlist.add(0, p4);       //输出集合的长度       System.out.println("集合长度:"+personlist.size());       ////遍历集合forearch循环       for (Person p : personlist) {           System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());    }              //查找集合中是否有p4对象true代表有,false代表没有       System.out.println("查找集合中是否有p4对象:"+personlist.contains(p4));       //p2元素所在的下标从前向后    System.out.println("p2元素所在的下标从前向后:"+ personlist.indexOf(p2));    //p2元素所在的下标从后向前    System.out.println("p2元素所在的下标从后向前:"+ personlist.lastIndexOf(p2));           }}
五、LinkedList例子

package com.pb.demo1;import java.util.LinkedList;import java.util.List;public class PersonLinkedListTest {    public static void main(String[] args) {        /*         * 创建多个Person对象并赋值         */         Person p1 = new Person("张三",21);         Person p2 = new Person("李四",22);         Person p3 = new Person("王五",23);         Person p4 = new Person("赵六",24);         Person p5 = new Person("钱七",25);                  //创建LinkedList         LinkedList<Person>plist=new LinkedList<Person>();         plist.add(p1);         plist.add(p2);         plist.add(p3);         //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }        //在第一个和最后一个添加对象         plist.addFirst(p4);         plist.addLast(p5);         System.out.println("===========添加数据=================");         //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }               //获取指定下标的元素:下标要已经存在如果不存在运行后将报错         System.out.println("获取指定下标的元素:"+plist.get(4).getName());         System.out.println("===========按下标移除=================");         //移除元素remove,按下标移除         plist.remove(0);        //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }         System.out.println("===========直接移除对象=================");         //移除元素remove 直接移除对象,         plist.remove(p2);        //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }         System.out.println("===========移除第一个或者最后一个=================");         //移除元素移除第一个或者最后一个         plist.removeFirst();         plist.removeLast();        //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }         System.out.println("===========移除全部=================");         //移除全部元素clear方法         plist.clear();        //集合长度         System.out.println("集合长度"+plist.size());         //遍历集合         for (Person p : plist) {             System.out.println("姓名:"+p.getName()+"年龄:"+p.getAge());        }             }}
六、Vector类在List接口中还有一个子类:Vector,Vector类属于一个挽救的子类,从整个JAVA的集合发展历史来看,Vector算是一个元老级的类,在JDK 1.0的时候就已经存在类此类。但是到了JAVA 2(JDK 1.2)之后重点强调了集合框架的概念,所以先后定义了很多的新接口(如:List等),但是考虑到一大部分的人已经习惯了使用Vector类,所以JAVA的设计者,就让Vector类多实现了一个List接口,这才将其保留下来。但是因为其是List子类,所以Vector类的使用与之前的并没有太大的区别。
package com.pb.demo1;import java.util.Vector;public class VectorTest {    public static void main(String[] args) {                Vector<String> plist=new Vector<String>();                plist.add("张三");        plist.add("李四");        plist.add("王五");        plist.add("赵六");        System.out.println("长度:"+plist.size());        for (String s : plist) {            System.out.println(s);        }    }}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表