Guest User

Untitled

a guest
Jun 22nd, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.68 KB | None | 0 0
  1. package puzz;
  2.  
  3. import java.util.*;
  4. import static java.util.stream.Collectors.*;
  5.  
  6. public class Puzz1 {
  7.  
  8. public static void main(String[] args) {
  9. final Puzz1 puzz = new Puzz1();
  10. puzz.test();
  11. }
  12.  
  13. Source source = new Source();
  14. Target target = new Target();
  15.  
  16. public static class FeatureData {
  17.  
  18. private String name;
  19. private String data;
  20.  
  21. public String getName() {
  22. return name;
  23. }
  24.  
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28.  
  29. public String getData() {
  30. return data;
  31. }
  32.  
  33. public void setData(String data) {
  34. this.data = data;
  35. }
  36. }
  37.  
  38. public static class Classification {
  39. private List<FeatureData> features = new ArrayList<>();
  40.  
  41. public List<FeatureData> getFeatures() {
  42. return features;
  43. }
  44.  
  45. public void setFeatures(List<FeatureData> features) {
  46. this.features = features;
  47. }
  48. }
  49.  
  50. public static class Source {
  51. private List<Classification> classifications = new ArrayList<>();
  52.  
  53. public List<Classification> getClassifications() {
  54. return classifications;
  55. }
  56.  
  57. public void setClassifications(List<Classification> classifications) {
  58. this.classifications = classifications;
  59. }
  60. }
  61.  
  62. public static class Target {
  63. private Map<String, List<String>> features;
  64.  
  65. public Map<String, List<String>> getFeatures() {
  66. return features;
  67. }
  68.  
  69. public void setFeatures(Map<String, List<String>> features) {
  70. this.features = features;
  71. }
  72. }
  73.  
  74. private List<String> getStringValues(FeatureData data) {
  75. return Arrays.asList(data.getData().split(" "));
  76. }
  77.  
  78. private List<String> mergeLists(List<String> a, List<String> b) {
  79. final ArrayList<String> result = new ArrayList<>(a);
  80. result.addAll(b);
  81. return result;
  82. }
  83.  
  84. void test() {
  85. Optional.ofNullable(source.getClassifications())
  86. .map(classifications -> classifications.stream()
  87. .flatMap(classification -> classification.getFeatures().stream())
  88. .collect(toMap(FeatureData::getName, this::getStringValues)))
  89. .ifPresent(target::setFeatures);
  90.  
  91. Optional.ofNullable(source.getClassifications())
  92. .map(classifications -> classifications.stream()
  93. .flatMap(classification -> classification.getFeatures().stream())
  94. .collect(toMap(FeatureData::getName, this::getStringValues, this::mergeLists, HashMap::new)))
  95. .ifPresent(target::setFeatures);
  96. }
  97. }
Add Comment
Please, Sign In to add comment