There is the following code:

File[] files = folder.listFiles(); Observable .fromArray(files) .groupBy(file -> getExtension(file)); 

getExtension - the method that returns the file extension.

How do I get an object of this type:

 Observable<GroupedList> observable; 

GroupedList class GroupedList :

  public interface ListOfFiles { class GroupedList implements ListOfFiles{ private String extension; private List<File> files; public GroupedList(String extension, List<File> files) { this.extension = extension; this.files = files; } public String getExtension() { return extension; } public List<File> getFiles() { return files; } public void setExtension(String extension) { this.extension = extension; } public void setFiles(List<File> files) { this.files = files; } } } 

    1 answer 1

     class GroupedList { private String extension; private List<File> files; public GroupedList() { this.files = new ArrayList<>(); } public String getExtension() { return extension; } public List<File> getFiles() { return files; } public void setExtension(String extension) { this.extension = extension; } public void setFiles(List<File> files) { this.files = files; } } List<GroupedList> list = Observable.fromArray(folder.listFiles()) .groupBy(SomeClass::getFileExtension) .flatMapSingle(group -> group.collect(GroupedList::new, (groupedList, file) -> { groupedList.setExtension(getFileExtension(file)); groupedList.getFiles().add(file); })) .toList() .blockingGet(); 
    • Greetings, Sergey! Stresses GroupedList :: new: Bad return typePackage.GroupedList to U.
    • Add the GroupedList class code to the question. - Sergey Gornostaev
    • Completed the question. - Ivan
    • You need to add a constructor without parameters. - Sergey Gornostaev
    • Yes. Everything really helped, thanks. The only thing added groupedList.setFiles (list); Because in the groupedList.getFiles (). add (file); NPE crashes - Ivan