I have string
String in = "Row: 1, Seat: 1, Row: 1, Seat: 2, Row: 1, Seat: 3, Row 4: Seat 10, Row 5: Seat 8, Row 5: Seat 9
And i want to get it:
String out = "Row: 1, Seat: 1, Seat: 2, Seat: 3, Row 4: Seat 10, Row 5: Seat 8, Seat 9
How i can do this? Maybe via regular expressions?
Advertisement
Answer
Try this.
Map<String, List<String>> map = Stream.of(in.split("\s*,\s*"))
.map(e -> e.split("\s*:\s*"))
.collect(Collectors.groupingBy(a -> a[0], TreeMap::new,
Collectors.mapping(a -> a[1], Collectors.toList())));
String out = map.entrySet().stream()
.map(e -> e.getKey() + ": "
+ e.getValue().stream().collect(Collectors.joining(", ")))
.collect(Collectors.joining(", "));
System.out.println(out);
output:
Row 1: Seat 1, Seat 2, Seat 3, Row 4: Seat 10, Row 5: Seat 8, Seat 10