Java中定制比较器
来源:互联网 发布:web安全扫描软件 编辑:程序博客网 时间:2024/06/09 22:22
当需要进行比较而默认的比较方式不满足我们的需求时,可以自己写比较器。
class ComparatorName implements Comparator<T> { //按照需求写比较器方法 public int compare(T t1, T t2) { }}
华为机试题:错误纪录功能
import java.io.*;import java.util.*;public class Main { public static void main(String[] args) throws IOException{ Scanner in = new Scanner(System.in); List<String> list = new ArrayList<>(); List<List<String>> result = new ArrayList<>(); while(in.hasNext()) { String tempFilename = in.next(); int lineNum = in.nextInt(); in.nextLine(); String[] arr = tempFilename.split("\\\\"); String filename = arr[arr.length - 1]; String input = filename + " " + lineNum; if(!list.contains(input)) { list.add(input); List<String> temp = new ArrayList<>(); temp.add(input); temp.add(1 + ""); result.add(temp); } else { Iterator<List<String>> iterator = result.iterator(); while(iterator.hasNext()) { List<String> temp = iterator.next(); if(input.equals(temp.get(0))) { int count = Integer.parseInt(temp.get(1)); count++; temp.set(1, count + ""); } } } } in.close(); String[] resultArr = new String[result.size()]; int j = 0; for(List<String> e : result) { String sName = e.get(0).split(" ")[0]; if(sName.length() > 16) { sName = sName.substring(sName.length() - 16); String lNum = e.get(0).split(" ")[1]; resultArr[j++] = sName + " " + lNum + " " + e.get(1); continue; } resultArr[j++] = e.get(0) + " " + e.get(1); } sort(resultArr, new StringComparator()); //根据出现次数进行递减排序 if(resultArr.length <= 8) //输出结果 for(String e : resultArr) System.out.println(e); else { for(int i = 0; i < 8; i++) System.out.println(resultArr[i]); } } public static void sort(String[] s, Comparator<String> cmp) { int j; for(int i = 1; i < s.length; i++) { String temp = s[i]; for(j = i; j > 0 && cmp.compare(temp, s[j - 1]) > 0; j--) s[j] = s[j - 1]; s[j] = temp; } }}/* * 定制比较器 */class StringComparator implements Comparator<String> { public int compare(String s1, String s2) { int lastSubStr1 = Integer.parseInt(s1.split(" ")[s1.split(" ").length - 1]); int lastSubStr2 = Integer.parseInt(s2.split(" ")[s2.split(" ").length - 1]); return lastSubStr1 - lastSubStr2; }}
0 0
- Java中定制比较器
- Java中比较器小结
- Python中定制类的比较运算方法
- java中Comparator比较器的使用
- Java中字符串比较
- java中字符串比较
- java中比较字符串
- java中时间比较
- java中时间比较
- Java中字符串比较
- java中时间比较
- java中时间比较
- Java中BigDecimal比较
- java中&&和&比较,||和|比较
- Java中byte[]比较----字节数组比较
- Java中字符串的比较
- java中String的比较
- JAVA中时间的比较
- bootstrap-datetimepicker的使用
- RxJava上手(一)
- PCA主成分分析
- 关于HSQLDB访问已有数据库文件的操作说明
- Laravel & Lumen RESTFul API 扩展包:Dingo API(一) —— 安装配置篇
- Java中定制比较器
- 线段树 Just a hook
- 设置SQLServer的行版本控制隔离级别
- 安卓开发——Mac下Androidstudio如何获取数字签名证书的SHA1值
- jsp页面无法加载css、js、图片的问题
- spring boot中自定义错误提示页面
- java环境变量配置
- QDialogButtonBox 类
- sklearn:Python语言开发的通用机器学习库