java - 如何在对象中搜索数据并转换为列表
问题描述
我想从对象中搜索值并将结果转换为列表
我试图获取数据对象名称“数据”,我想搜索每个具有“查询文本”的项目。如何将对象数据转换为列表
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;
}
}
电影数据.java
public class MovieData {
private String title;
private int year;
private List<String> cast;
private List<String> genres;
getter and setter
}
电影.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> {
}
电影数据服务.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”。如何使用“like “用这个过滤器?
解决方案
不要通过流获取所有电影并对其进行归档,而是编写一个查询您想要的电影的方法。
就像是
SELECT * FROM movies WHERE title = 'queryText'
根据您的代码/框架,您必须实现此功能,或者只需在 MovieDataService 中选择另一种方法。
推荐阅读
- react-native - React Native Autocomplete Input 结果列表忽略触摸
- php - 为什么这个 Sylius 资源 API 要求提供模板?
- node.js - 无法在我的节点应用程序中使用 Microsoft 身份平台交换身份验证代码以获取访问令牌
- python - 对于 Maya,我如何在另一个函数中调用一个函数
- android - ADB 从 APK 中检索类测试列表
- jquery - 使用jquery在gridview中启用/禁用复选框
- angular - 无法获取 /[object%20Object]
- react-native - 数组或迭代器中的每个孩子都应该有一个唯一的“key”道具
- numpy - python numpy 和 sklearn trig 函数是使用查找表来查找答案还是尝试即时计算值?
- c# - 缺少 Visual Studio 中的文件夹和文件。甚至没有显示在项目中