list接口

来源:互联网 发布:c语言define的位置 编辑:程序博客网 时间:2024/05/21 06:58

list接口继承了Collection接口来定义一个允许重复项的有序集合。List接口大量的扩充了Collection接口的操作。该接口能对列表的一部分进行操作,而且还添加了面向位置的操作,比如添加元素add(int index,Object element)、移除元素remove(int index)等。

List接口的特点:1.集合中的元素可以重复;2.元素顺序是有序的,即放进去的顺序和获取元素的顺序是一致的

List接口的常用子类ArrayList、LinkList、Vector
1.ArrayList:通过面向对象的多态性为List接口实例化。内部用数组实现。

//创建一个ArrayList的集合,泛型为Student   List<Student> list = new ArrayList<Student>();

向集合中添加元素

 Student stu1 = new Student("张三",14);//创建一个Student对象    list.add(stu1);

遍历list集合中的元素(方法一)

for(int i=0;i<list.size();i++){            Student s = list.get(i);//获取集合中第i个位置的元素            System.out.println(s.getName());        }

遍历list集合中的元素(方法二):for each循环

for(Student stu:list){            System.out.println(stu.getName());        }

遍历list集合中的元素(方法三):iterator循环

Iterator<Student> it= list.iterator();        while(it.hasNext()){//如果有下一个元素,就将它打印出来            System.out.println(it.next().getName());        }

List集合中元素的排序
将集合中的学生进行排序时,必须要指定一个裁判来制定规则,因为学生是一个对象,没有可比性,只能根据它拥有的属性来比较进行排序。这个裁判由Comparator来充当,重写其中的compare方法。

Collections.sort(list,new Comparator<Student>(){            @Override            public int compare(Student arg0, Student arg1) {                // TODO Auto-generated method stub                return arg1.getAge()-arg0.getAge();            }        });

通过上面的排序操作,集合就会按照学生的年龄进行排序。
因为compare方法的返回值为int型,如果比较的两个元素是double型或String型,就需要用各自包装类的compareTo方法。例如按学生的姓氏进行排列时:

                return arg1.getName().compareTo(arg0.getName());

对compare方法的解释:
按照升序排序时:如果arg<0arg1,返回-1;相等返回0;arg0>arg1,返回1。
按照降序排序时:如果arg<0arg1,返回1,相等返回0;arg0>arg1,返回-1。

ArrayList和LinkList的区别:
ArrayList是基于数组的集合,查找快,因为LinkList需要移动指针从一端一个一个查,浪费时间。
LinkList是链表结构的集合,插入删除快,因为在ArrayList中插入或删除元素时后面的元素都要移动,浪费时间。

ArrayList和Vector的区别:
Vector支持线程的同步,即同一时间内只允许一个线程使用Vector,线程安全但是效率低。
ArrayList线程不安全但是效率高。

0 0
原创粉丝点击