java - 如何在java中制作排序列表?
问题描述
我在学校有一项任务,其中一项要求是对狗进行排序。除了这个要求,我已经在我的代码中完成了所有工作,因为我不知道该怎么做。下面你可以看到这部分作业的描述:
7 命令:“list dogs” 该命令包含在您在提交步骤四中提交的程序中,但要求有所改变。改变的是列表必须排序,所有者必须出现在打印输出中,并且如果没有注册的狗应该有错误消息。此命令列出注册表中的狗。用户必须得到一个关于最小尾巴长度的问题,并且程序必须打印出犬舍中所有尾巴长度相同或更长的狗的列表。如果您输入 0,那么所有的狗都会被打印出来。如果改为指定 10,则仅写入尾长大于或等于 10 的狗。打印时,必须打印所有狗的属性和尾巴长度。这包括此版本程序中的可能所有者。该列表应按尾长排序。如果两只狗的尾巴长度相同,则必须按名称排序。
示例:list dogs 命令> list dogs 要显示的最小尾巴长度> 1 以下狗有这么大的尾巴: * Fido(腊肠犬,1 年,2 公斤,3.70 厘米尾巴) * Karo(斗牛犬,8 年,7 公斤, 5.60 厘米尾巴,由 Henrik 拥有)* Milou(梗犬,7 岁,8 公斤,5.60 厘米尾巴)
如果没有登记的狗,就不应该有最小尾巴长度的问题。相反,应该打印一条错误消息。确保错误消息包含一些单词error或error,否则测试程序无法识别它是错误消息。示例:list dogs 命令> list dogs 错误:注册中没有狗
这是我的“列出狗”的代码
private void listDogs() {
System.out.print("Smallest tail length to display: ");
kennelList.sort(Comparator.comparing(dog -> dog.getName()));
double tailLength = input.nextDouble();
input.nextLine();
int y = 0;
while (y < kennelList.size()) {
Dog dTail = kennelList.get(y);
if (dTail.getTailLength() >= tailLength) {
System.out.println(dTail);
}
y++;
}
}
解决方案
// define comparators
final Comparator<Dog> SORT_BY_NAME_ASC = Comparator.comparing(Dog::getName);
final Comparator<Dog> SORT_BY_TAIL_LENGTH_ASC = Comparator.comparing(Dog::getTailLength);
// define a list
List<Dog> kennelList = Collections.emptyList();
// sort list items (you can swap comparators)
kennelList.sort(SORT_BY_NAME_ASC.thenComparing(SORT_BY_TAIL_LENGTH_ASC));
// retrieve items with at least required tailLength
public static List<Dog> filterByTailLength(List<Dog> kennelList, double tailLength) {
return kennelList.stream()
.filter(dog -> Double.compare(dog.getTailLength(), tailLength) >= 0)
.collect(Collectors.toList());
}
推荐阅读
- javascript - Overlapping bar chart apache echarts baidu
- javascript - 第二次拖动时出现Javascript拖放错误
- c# - function to returns the nearest element of array to an integer
- kubernetes - 如何以编程方式访问 helm
- javascript - How to merge multiple CSV files into single file which are under different Subfolders of Folder in GDrive.?
- tensorflow - Pytorch 相当于 tf.Variable
- angular - 如何配置我想交换数据而不是合并的 NgRx 数据?
- python - Assign values to different index positions as the actual in a loop python
- java - 如何将时间“0000-00-00 00:00:00”设置为 LocalDateTime?
- python - Jupyter markdown: Curly brace symbole doesn't show correctly