通过不区分大小写的元素查找列表中的原始元素

时间:2018-01-26 13:21:26

标签: java list data-structures java-8

列表包含值:

Aa
Bb
CC

我希望通过发送不区分大小写的值来获取原始值。 实施例

public class TEST {

    static List<String> list;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        list.add("Aa");
        list.add("Bb");
        list.add("CC");

        //should return Aa
        String originalValue = getOriginalElement("aa");

        //should return Bb
        originalValue = getOriginalElement("BB");

        //should return CC
        originalValue = getOriginalElement("cc");
    }

    static public String getOriginalElement(String caseInsensitiveStr){
        String magic ="";
        // magic happens here
        // magic = 
        return magic;
    }
}

java 8流解决方案也欢迎

3 个答案:

答案 0 :(得分:2)

如果您有额外的内存,请添加一些键值存储(甚至HashMap),其中键是小写字符串,值是原始字符串。

答案 1 :(得分:2)

使用Java 8流的解决方案:

static public String getOriginalElement(String caseInsensitiveStr){
    return list.stream().filter(
        x -> caseInsensitiveStr.equalsIgnoreCase(x)).findFirst().get();
}

答案 2 :(得分:1)

恕我直言你需要一个map来做这个 magic 这样的事情:

static List<String> list;
static Map<String, String> map = new HashMap<>();

/**
 * Launch the application.
 */
public static void main(String[] args) {
    add("Aa");
    add("Bb");
    add("CC");

    //should return Aa
    String originalValue = getOriginalElement("aa");

    //should return Bb
    originalValue = getOriginalElement("BB");

    //should return CC
    originalValue = getOriginalElement("cc");
}

static public void add(String element){
    list.add(element);
    map.put(element.toLowerCase(), element);
}

static public String getOriginalElement(String caseInsensitiveStr){
    return map.get(caseInsensitiveStr.toLowerCase());
}

如果你只想要一个&#34;魔法&#34;没有额外地图的代码:

static public String getOriginalElement(String caseInsensitiveStr){
    return list.stream().filter(s -> s.equalsIgnoreCase(caseInsensitiveStr)).findFirst().get();
}