List 有值:
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 流解决方案也受到欢迎
如果您有额外的内存,请添加一些键值存储(甚至HashMap
(,其中键是小写字符串,值是原始字符串。
使用 Java 8 流的解决方案:
static public String getOriginalElement(String caseInsensitiveStr){
return list.stream().filter(
x -> caseInsensitiveStr.equalsIgnoreCase(x)).findFirst().get();
}
恕
我直言,你需要一个map
来做这个神奇的事情,像这样:
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());
}
如果您只想要一个"魔术"代码而没有额外的地图:
static public String getOriginalElement(String caseInsensitiveStr){
return list.stream().filter(s -> s.equalsIgnoreCase(caseInsensitiveStr)).findFirst().get();
}