集合工具类
2015-07-22 01:34
344 查看
@(笔记)[MarkDown|集合|我的博客]
07.21
集合工具类
Collections类
Arrays类
比较器
Comparable
Comparator
sort() 对元素进行排序,可以传入比较器
max() 返回最大元素,可以传入比较器
min() 返回最小元素,可以传比较器
reverse() 反排序
shuffle() 混排
方法更多,还是看API吧
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
一个类继承了Comparable接口后,重写compareTo()方法,就能按照我们自己的规则排序
例子:
当把Student对象存储在List集合中的时候,
可以使用Collections工具类对这个Student集合进行排序.
如果调用Collections的
当调用
当我们传入一个比较器的时候,就会根据我们自己定义的规则进行排序
因为在Student类继承Comparable接口,重写了此接口的compareTo()方法,当对arrayStudent集合进行排序的时候,会按照我们重写后的规则进行排序
接着上面的例子
重新定义一个实现了Comparator接口的类
然后调用
将按照我们的规则进行排序.
在以前我们只能比较基本数据类型和字符串
现在学习了比较器之后,我们就可以比较(排序)对象了,
只要继承了Comparable或者传入一个实现了Comparator接口的自己定义的比较规则的对象,
就可以按照我们的想法对元素进行排序.
07.21
集合工具类
Collections类
Arrays类
比较器
Comparable
Comparator
集合工具类
Collections类
此类方法众多,只介绍几个常用方法sort() 对元素进行排序,可以传入比较器
max() 返回最大元素,可以传入比较器
min() 返回最小元素,可以传比较器
reverse() 反排序
shuffle() 混排
Arrays类
此类包含用来操作数组(比如排序和搜索)的各种方法。方法更多,还是看API吧
比较器
Comparable
内部比较器public interface Comparable
此接口强行对实现它的每个类的对象进行整体排序。这种排序被称为类的自然排序,类的 compareTo 方法被称为它的自然比较方法。
int compareTo(T o)
一个类继承了Comparable接口后,重写compareTo()方法,就能按照我们自己的规则排序
例子:
public class Student implements Comparable<Student>{ private String name; private int age; private int score; public Student() { } public Student(String name, int age, int score) { super(); this.name = name; this.age = age; this.score = score; } 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; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } /** * 比较规则是按照年龄来排 */ @Override public int compareTo(Student stu) { // TODO Auto-generated method stub if(this.age > stu.getAge()){ return 1; }else if(this.age < stu.getAge()){ return -1; }else{ return 0; } } @Override public String toString() { // TODO Auto-generated method stub return "名字:" + this.name + ";年龄:" + this.age + ";成绩:" + this.score; } }
当把Student对象存储在List集合中的时候,
可以使用Collections工具类对这个Student集合进行排序.
如果调用Collections的
sort(List<T> list)方法,就会根据元素的自然顺序 对指定列表按升序进行排序
当调用
sort(List<T> list, Comparator<? super T> c)方法时,
当我们传入一个比较器的时候,就会根据我们自己定义的规则进行排序
ArrayList<Student> arrayStudent = new ArrayList<Student>(); arrayStudent.add(new Student("张三",26,90)); arrayStudent.add(new Student("李四",20,76)); arrayStudent.add(new Student("王武",24,68)); Collections.sort(arrayStudent);
因为在Student类继承Comparable接口,重写了此接口的compareTo()方法,当对arrayStudent集合进行排序的时候,会按照我们重写后的规则进行排序
Comparator
外部比较器接着上面的例子
重新定义一个实现了Comparator接口的类
public class StudentComparator implements Comparator<Student>{ @Override public int compare(Student stu1, Student stu2) { // TODO Auto-generated method stub if(stu1.getName().length() > stu2.getName().length()){ return 1; }else if(stu1.getName().length() < stu2.getName().length()){ return -1; }else{ return 0; } } }
然后调用
Collections.sort(arrayStudent,new StudentComparator());
将按照我们的规则进行排序.
在以前我们只能比较基本数据类型和字符串
现在学习了比较器之后,我们就可以比较(排序)对象了,
只要继承了Comparable或者传入一个实现了Comparator接口的自己定义的比较规则的对象,
就可以按照我们的想法对元素进行排序.
相关文章推荐
- 求二叉树中节点的最大距离
- 【 socke】C# socket端口复用-多主机头绑定
- 关系表达式的使用
- 02 JAVA 对象补充 抽象VS接口
- 你必须知道的指针基础-7.void指针与函数指针
- JAVA面试题——JAVA编程题1(2015.07.22——湛耀)
- flask-SQLAlchemy一些使用技巧(关联关系的创建)
- STM32CUBE——6
- Eclipse 启动不了 一闪而过
- 9.Palindrome Number (INT)
- Logistic回归
- POJ 1860 解题报告
- jQuery学习之jQuery Ajax用法详解
- strtok()分割字符串函数
- hdu 5288 OO’s Sequence
- codeforces 397A On Segment's Own Points-yy
- UBUNTU如何安装tar.gz版的flash
- oracle11gR2 导出表报EXP-00011:table不存在。
- 复合赋值运算符的使用
- java的本地文件操作