Java Stream Map T -> ?T:List<T> -
i'm new java , love stream api. got loop:
list<filetree> expanded = new arraylist<>(); for(filetree item : tree){ if(item.gettype().equals("tree")){ expanded.addall(gettreeofsubstudpackage(item.getname())); } else{ expanded.add(item); } } and wonder if converted neat stream. first guess following:
tree.stream().map(filetree -> { if(filetree.gettype().equals("tree")){ return gettreeofsubstudpackage(filetree.getname()); } else{ return filetree; } }).collect(collectors.tolist()); it compiles fine. recommended, have implemented no-go or there nicer way? , last not least: there overhead in .stream() make improvement worthless?
appendix
list<filetree> gettreeofsubstudpackage(...){ //... } class filetree { private string name; private string type; private string mode; private string id; //... public getter , setter ... }
you need map , flatmap.
arrays.aslist(item) add element list flat in next flatmap
tree.stream() .map(item -> item.gettype().equals("tree") ? gettreeofsubstudpackage(item.getname()) : arrays.aslist(item)) .flatmap(collection::stream) .collect(collectors.tolist());
Comments
Post a Comment