Manipulacja Listami używając stream

0

Chce do fileDtos dodać pewne dane z files streamami . niestety nie działa mi (pokazany przykład na dole).. Może pomoże ktoś w tej kwestii z góry dzięki

FileDto

public class FileDto {
	private String name;
	private byte[] content;
	private String extension;

	public String getPath() {
		return path;
	}

	private String path;

	public FileDto(String name, byte[] content, String extension) {
		super();
		this.name = name;
		this.content = content;
		this.extension = extension;
	}
	
	public FileDto(String name) {
		super();
		this.name = name;
		
	}

	public void setPath(String path) {
		this.path = path;
	}

	public FileDto() {
		super();
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public byte[] getContent() {
		return content;
	}

	public void setContent(byte[] content) {
		this.content = content;
	}

	public String getExtension() {
		return extension;
	}

	public void setExtension(String extension) {
		this.extension = extension;

	}

}

List<File> files = ArrayList<>();
files.add(new Files(paths));
List<FileDto> fileDto = new ArrayLIst<>();

/*tu jest błąd,  Jest to przykład o co mi chodzi w ogóle */
fileDtos.stream().map(fileDto->new FileDto(findFiles().stream().map(f->f.getName())));



0

A jaki błąd masz? Wygląda mi że fileDtos nie jest rozpoznane.
Co do próbu łączenia streamów, konstruktor FileDto nie pozwala na taki argument, próbujesz przekazać streama Stringów.

0

List<File> files = ArrayList<>();
files.add(new Files(paths));
List<FileDto> fileDto = new ArrayLIst<>();

/*tu jest błąd,  Jest to przykład o co mi chodzi w ogóle */
fileDtos.stream().map(fileDto->new FileDto(findFiles().stream().map(f->f.getName())));



w .map używasz nazwy zmiennej fileDto takiej samej jak zadeklarowana powyżej.

0
Kermii napisał(a):

A jaki błąd masz? Wygląda mi że fileDtos nie jest rozpoznane.
Co do próbu łączenia streamów, konstruktor FileDto nie pozwala na taki argument, próbujesz przekazać streama Stringów.

Tak dokładnie mi pokazuje to co bym musiał zmienić aby wstawiał mi String bo ty chyba rozumiesz co chce zorbić

0

Stream concat - https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html#concat-java.util.stream.Stream-java.util.stream.Stream-

Stream<FileDto> baseStream = fileDtos.stream();
Stream<FileDto> streamToAppend = findFiles().stream().map(f -> new FileDto(f.getName());

Stream<FileDto> resultStream = Stream.concat(baseStream, streamToAppend);
List<FileDto> resultList = resultStream.collectTo(Collectors.toList());

Nie sprawdzałem tego w kompilatorze, może nawet mam źle nawiasy, ale coś w tym stylu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1