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接口实例化。内部用数组实现。
向集合中添加元素
遍历list集合中的元素(方法一)
遍历list集合中的元素(方法二):for each循环
遍历list集合中的元素(方法三):iterator循环
List集合中元素的排序
将集合中的学生进行排序时,必须要指定一个裁判来制定规则,因为学生是一个对象,没有可比性,只能根据它拥有的属性来比较进行排序。这个裁判由Comparator来充当,重写其中的compare方法。
通过上面的排序操作,集合就会按照学生的年龄进行排序。
因为compare方法的返回值为int型,如果比较的两个元素是double型或String型,就需要用各自包装类的compareTo方法。例如按学生的姓氏进行排列时:
对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线程不安全但是效率高。
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线程不安全但是效率高。
相关文章推荐
- 解决 .gitignore无效,不能过滤某些文件
- Linux信号说明列表
- 【54】Java反射机制剖析
- 【54】Java反射机制剖析
- caffe学习小问题(1):caffe中的Accuracy
- 系统分析员考试复习笔记-8 第八章 软件工程
- UITableView的cell表格刷新(增加,删除,修改)
- 信息系统项目管理师考试视频、录音打包下载
- Python缩进和冒号详解
- 判断设备终端是pc还是移动端
- Android 应用签名工具----酷传
- 运动跟踪之TLD(一)--TLD理论前瞻
- 高精度/大数模板
- 自定义圆形ImageView控件
- mysql tinyint
- Validate Binary Search Tree
- win10系统封装过程详解
- android 跨进程通讯详解
- Android布局技巧之使用ViewStub
- 贪心法——乘船问题