如何在对象中搜索数据并将其转换为列表

时间:2019-06-25 10:44:53

标签: java spring spring-boot

我想从对象中搜索值并将结果转换为列表

我试图获取数据对象名称“ data”,我想搜索每个具有“ querytext”的项目。如何将对象数据转换为List

public class SimpleMovieSearchService implements MovieSearchService {
   @Autowired
   private MovieDataService movieDataService;

   @Override
   public List<Movie> search(String queryText) {
   MoviesResponse data =movieDataService.fetchAll();
       List<Movie> result = data.stream() // problem in this line 
            .filter(item -> item.getTitle().equals("queryText"))
            .collect(Collectors.toList());

    return result;
   }
}

MovieData.java

public class MovieData {
   private String title;
   private int year;
   private List<String> cast;
   private List<String> genres;

   getter and setter
}

Movie.java

public class Movie {
   @Id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   private String name;

   @ElementCollection(fetch = FetchType.EAGER)
   private List<String> actors = new ArrayList<>();

 getter and setter
}

修改

MovieResponse.java

public class MoviesResponse extends ArrayList<MovieData> {
}

MovieDataService.java

public interface MovieDataService {
  MoviesResponse fetchAll();
}

我得到的数据类型是MovieData列表,但是我想要电影列表中的结果如何解决此问题或另一种方法。并且不更改 Movie.java MovieData中的任何内容.java

更新

现在我可以用这种方式

MoviesResponse a = movieDataService.fetchAll();
    List<Movie> result = a.stream()
            .map(movie -> new Movie(movie.getTitle()))
            .filter(movie -> movie.getName().equals(queryText)) //this line
            .collect(Collectors.toList());

如果数据是“ banana”,“ nature”,“ red”,然后查询文本是“ na”,我想要的结果是“ banana”和“ nature”。在sql中,它可以使用“ like”。如何将此过滤器使用“喜欢”吗?

2 个答案:

答案 0 :(得分:0)

编写一种查询所需电影的方法,而不是获取所有电影并按流过滤它们。

类似

SELECT * FROM movies WHERE title = 'queryText'

根据您的代码/框架,您必须实现此功能或仅在MovieDataService中选择另一个方法。

答案 1 :(得分:0)

尝试使用流图

data.stream() // problem in this line 
        .filter(item -> item.getTitle().equals("queryText"))
        .map(movie -> {
        //logic to transform MovieResponse in Movie here
        })
        .collect(Collectors.toList());

更多内容,请访问:https://dzone.com/articles/how-to-use-map-filter-collect-of-stream-in-java-8