数组排序:内部类
来源:互联网 发布:视图可以对数据 编辑:程序博客网 时间:2024/06/10 21:17
内部类
顾名思义就是:在一个类内部再来一个类。
我们还是来改造MyCompare
这个类,这是一个母类。
内部包含DescCompare
和AscCompare
分别代表 降序和升序排列。
实例化时先要有外部类对象,然才能有内部类的实例化。所以内部类里面也不能有啥静态方法
import java.util.Comparator;public class MyCompare{ // 降序 public class DescCompare implements Comparator<String>{ @Override public int compare(String o1, String o2) { return o2.length() - o1.length(); } } // 升序 public class AscCompare implements Comparator<String>{ @Override public int compare(String o1, String o2) { return o1.length() - o2.length(); } }}
MyCompare
类有2个内部类了。
接下来,我们看怎么使用:
// 降序排序 // 数组 String[] names = {"zhangsan","lisi","wangwu","hanmeimei"}; // 排序 MyCompare myCompare = new MyCompare(); MyCompare.DescCompare descCompare = myCompare.new DescCompare(); Arrays.sort(names, descCompare);
如果要按升序排列:
// 注意看 内部类,是怎么被实例化的 MyCompare.AscCompare ascCompare = myCompare.new AscCompare(); Arrays.sort(names, ascCompare);
另一种内部类
上面我们分别写了2个内部来,来实现降序和升序。那么能不能稍微有所简化呢?
我们只写一个方法,然后通过传递参数的形式来区分是要升序还是降序。
public Comparator<String> getCompare(boolean desc){ // 内部类 class innerCompare implements Comparator<String>{ @Override public int compare(String o1, String o2) { if (desc){ // 如果是降序 return o2.length() - o1.length(); }else { return o1.length() - o2.length(); } } } return new innerCompare(); // 返回内部类 }
我们在MyCompare
类里定义了上面方法,下面看如何使用的:
// 数组 String[] names = {"zhangsan","lisi","wangwu","hanmeimei"}; // 排序 MyCompare myCompare = new MyCompare(); Arrays.sort(names, myCompare.getCompare(true)); // 降序 Arrays.sort(names, myCompare.getCompare(false)); // 升序
这样不必再实例化内部类了,是不是代码更加简单了呢?^_^
匿名内部类
有时候一些功能只在一个地方临时写写,其他地方根本用不到,那么我们可以直接使用匿名内部类
// 数组 String[] names = {"zhangsan","lisi","wangwu","hanmeimei"}; // 排序 Arrays.sort(names, new Comparator<String>() { @Override public int compare(String o1, String o2) { return o2.length() - o1.length(); } });
如上面代码,我们直接使用匿名内部类,来实现排序。
阅读全文
0 0
- 数组排序:内部类
- 内部类的基本使用(用匿名内部类排序数组)
- java 对象数组,内部类
- 使用内部类进行排序
- 安卓集训营第四天---JAVA基础数组和排序,枚举,内部类
- Java中数组 枚举 内部类
- 数组队列与匿名内部类
- 使用匿名内部类排序对象
- 数组内数值的排序
- 局部内部类和匿名内部类访问final的局部变量---一个元素的数组
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 学习随笔—`malloc.h`内存申请头文件
- MT6735 alsps驱动P/L sensor问题
- 计算机网络基础知识
- 学习JAVA线程池
- SaltStack实战之manage、salt-ssh和salt jobs
- 数组排序:内部类
- 按钮的单击和多击事件
- <转>人工智能相关术语中英文对照
- PHP一维数组、二维数组排序
- JAVA中堆和栈的区别
- 清空文本框内容
- leetcode刷题网站
- Jupyter Notebook 使用总结 Pycharm
- Qt开发之绘图