我怎么能找到一个对象,Carnet
,在ArrayList
List<Carnet> listCarnet = carnetEJB.findAll();
public class Carnet {
private String codeTitre;
private String nomTitre;
private String codeIsin;
// Setters and getters
}
如果您使用Java8,并且您的搜索可能返回null,那么您可以尝试使用可选类。
找到通行证:
private final Optional<Carnet> findCarnet(Collection<Carnet> yourList, String codeIsin){
// This stream will simply return any carnet that matches the filter. It will be wrapped in a Optional object.
// If no carnets are matched, an "Optional.empty" item will be returned
return yourList.stream().filter(c -> c.getCodeIsin().equals(codeIsin)).findAny();
}
现在介绍一下它的用法:
public void yourMethod(String codeIsin){
List<Carnet> listCarnet = carnetEJB.findAll();
Optional<Carnet> carnetFound = findCarnet(listCarnet, codeIsin);
if(carnetFound.isPresent()){
// You use this ".get()" method to actually get your carnet from the Optional object
doSomething(carnetFound.get());
}
else{
doSomethingElse();
}
}
如果没有迭代,你就不能成功。
选择1
Carnet findCarnet(String codeIsIn) {
for(Carnet carnet : listCarnet) {
if(carnet.getCodeIsIn().equals(codeIsIn)) {
return carnet;
}
}
return null;
}
备选案文2
重写Carnet的equals()
方法。
备选案文3
将您的List
存储为Map
,而使用codeIsIn
作为键:
HashMap<String, Carnet> carnets = new HashMap<>();
// setting map
Carnet carnet = carnets.get(codeIsIn);
在Java8中,您可以使用流:
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsIn) {
return listCarnet.stream().filter(carnet -> codeIsIn.equals(carnet.getCodeIsin())).findFirst().orElse(null);
}
此外,如果您有许多不同的对象(不仅是Carnet
),或者您想通过不同的属性(不仅是cideIsin
)找到它,您可以构建一个实用程序类,将此逻辑封装在其中:
public final class FindUtils {
public static <T> T findByProperty(Collection<T> col, Predicate<T> filter) {
return col.stream().filter(filter).findFirst().orElse(null);
}
}
public final class CarnetUtils {
public static Carnet findByCodeTitre(Collection<Carnet> listCarnet, String codeTitre) {
return FindUtils.findByProperty(listCarnet, carnet -> codeTitre.equals(carnet.getCodeTitre()));
}
public static Carnet findByNomTitre(Collection<Carnet> listCarnet, String nomTitre) {
return FindUtils.findByProperty(listCarnet, carnet -> nomTitre.equals(carnet.getNomTitre()));
}
public static Carnet findByCodeIsIn(Collection<Carnet> listCarnet, String codeIsin) {
return FindUtils.findByProperty(listCarnet, carnet -> codeIsin.equals(carnet.getCodeIsin()));
}
}
问题内容: 存在一个包含许多对象的数组。通过属性在此数组中查找一个或多个对象所必需。 输入obj: 输出结果:(以值4搜索“开始”) 问题答案: _findItemByValue(Obj,“开始”,4); 与除IE6,IE7,IE8以外的所有版本兼容,但存在polyfill。
我有一个庞大的收集,我正在寻找一个关键的财产内的某个地方收集。获取包含该键/索引的所有对象的引用列表或完整路径的可靠方法是什么?如果有帮助的话,我使用jQuery和lodash,您可以忘记无限指针递归,这是一个纯JSON响应。 fwiw lodash有一个。find函数,该函数将查找两个嵌套深度的嵌套对象,但之后它似乎失败了。(例如。http://codepen.io/anon/pen/bnqyh
问题内容: 我正在尝试查找具有Attribute的元素。好吧,我可以在Selenium中找到具有Id,tagName,Xpath和所有其他预定义方法的元素。但是,我正在尝试编写一种方法,该方法将给定属性名称和值作为输入专门返回WebElement。 假设XPath不是一个选择,还有其他更好的方法吗? 问题答案: 您可以使用CSS轻松完成此任务。 公式为: 所以如果有的话 您可以使用以下方法找到它:
我正在尝试查找具有属性的元素。我可以在Selenium中找到Id、tagName、Xpath和所有其他预定义方法的元素。但是,我正在尝试编写一个方法,专门返回WebElement,给定属性名和值作为输入。 假设XPath不是一个选项,还有其他更好的方法吗?
问题内容: 我试图在AngularJS中创建一个自定义过滤器,该过滤器将通过特定属性的值过滤对象列表。在这种情况下,我要按“极性”属性(“正”,“中性”,“负”的可能值)进行过滤。 这是我没有过滤器的工作代码: HTML: 这是JSON格式的“ $ scope.tweets”数组: 我可以提出的最佳过滤器如下: 此方法返回一个空数组。从“ console.log(polarity)”语句中不会打印
问题内容: 该数组如下所示: 我有一个名为的整数变量。 如何选择具有对象的数组条目,其中的属性具有值? 问题答案: 您可以迭代数组,搜索特定记录(一次只能搜索一次),也可以使用另一个关联数组来构建哈希图。 对于前者,像这样