您的位置:首页 > 其它

list接口

2016-06-01 16:16 337 查看
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线程不安全但是效率高。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: