返回ArrayList字符串的方法

时间:2013-05-18 11:34:17

标签: java string arraylist

所以我有:

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”。

1 个答案:

答案 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)