所以我有:
private static ArrayList<AbstractAnalyser> analysers = new ArrayList<>();
public static String getAnalyser(String analyser){
if(analysers.contains(analyser)){
return "The full name of the analyser";
}
return null;
}
所以我想要的是......
如果arraylist包含参数分析器,我希望它返回arraylist中对象的全名。
假设这些值在arraylist中:
分析器,方法和第二。 &lt; - 随机名称
如果参数是分析器,并且arraylist包含分析器。该方法需要返回该名称。
即使参数是“analy”。
答案 0 :(得分:2)
我会使用Map而不是List:
private static Map<String, AbstractAnalyser> analysers = new HashMap<>();
public static AbstractAnalyser getAnalyser(String analyserName){
AbstractAnalyser result = null;
if ((analyserName != null) && (analyserName.trim().length() > 0)) {
if (analysers.containsKey(analyserName)) {
result = analysers.get(analyserName);
} else {
for (String key : analysers.keySet()) {
// put the logic to find the one you want here.
}
}
}
return result;
}
但是,如果必须,如果AbstractAnalyser能够为您提供名称,则可以这样做:
private static List<AbstractAnalyser> analysers = new ArrayList<>();
public static AbstractAnalyser getAnalyser(String analyserName){
AbstractAnalyser result = null;
if ((analyserName != null) && (analyserName.trim().length() > 0)) {
for (AbstractAnalyser analyser : analysers) {
// Here's how you look by name
if (analyser.getName().equals(analyserName)) {
result = analyser;
break;
} else {
// put special logic to find the one you want here.
}
}
}
return result;
}
当您提供确切的名称时,使用Map总是更有效,因为查找是O(1)
。列表查找始终为O(N)
。