java - 如何流式传输字符串列表并根据每个项目中的数字对其进行排序
问题描述
我有一个事件列表。每个项目都有以下元素玩家名称,事件时间,事件名称,以空格分隔。玩家姓名可以是名字,也可以是名字和姓氏。示例 [“Mark 45 G”、“Rob 4 Y”、“Jude Tom 6 R”]。我想根据事件时间的时间顺序对列表进行排序。所以输出将是 ["Rob 4 Y", "Jude Tom 6 R", "Mark 45 G"] 我创建了一个带有属性 String player,int time,String event 的 Event POJO 类,带有 getter 和 setter。我想要的是这样的
List<String> events= Arrays.asList( new String[] {"Mark 45 G", "Rob 4 Y", "Jude Tom 6 R" });
List<Event> orderedEvents = events.stream()
.map(a -> new Event(a[0], a[1], a[2]))
.sorted(Comparator.comparing(Event::getTime))
.collect(Collectors.toList());
但我不知道如何获取三个字段的字符串。由于时间可以排在第二位或第三位(如果还给出了姓氏)
解决方案
快完成了。您只需要将String
事件正确映射到Event
类。解决方案:
class Event {
private String playerName;
private int time;
private String name;
public Event(String eventString) {
String[] params = eventString.split(" ");
int i = 0;
this.playerName = params[i++];
if (params.length == 4) {
this.playerName += " " + params[i++];
}
this.time = Integer.valueOf(params[i++]);
this.name = params[i];
}
public String getPlayerName() {
return playerName;
}
public int getTime() {
return time;
}
public String getName() {
return name;
}
@Override
public String toString() {
final StringBuilder sb = new StringBuilder("Event{");
sb.append("playerName='").append(playerName).append('\'');
sb.append(", time=").append(time);
sb.append(", name='").append(name).append('\'');
sb.append('}');
return sb.toString();
}
}
并像这样使用它:
@Test
public void test() {
List<String> events = Arrays.asList("Mark 45 G", "Rob 4 Y", "Jude Tom 6 R");
List<Event> orderedEvents = events.stream()
.map(eventString -> new Event(eventString))
.sorted(Comparator.comparingInt(Event::getTime))
.collect(Collectors.toList());
System.out.println(orderedEvents);
}
推荐阅读
- c - 调用者如何通过指定多个参数来正确使用 clone() 系统调用?
- r - R ggplot2 将几个分类变量的闪避条形图除以一个带有百分比的因子
- go - 从 UUID 派生随机种子
- python - 使用 Python 检查 YouTube 视频列表是否仍然在线
- python - 使用 Beautiful Soup / find() 函数进行网络抓取得到结果 = 无
- django - 站点匹配查询不存在。一切都已设置,站点域已定义
- r - 根据函数判断一个点是否在范围内
- html - 创建一个按钮来下载 QR 图像(goqr.me API)
- python-3.x - 从熊猫列中获取字符串值
- reactjs - 如何使用 3D 物理创建加载骰子?我正在考虑 Cannon,但任何物理引擎示例都有效