我有一个使用此代码创建的arrayList:
public List<String> Apps = new ArrayList<String>();
此列表包含以下格式的字符串:
Data1+Description1
Data2+Description2
Data3+Description3
Data4+Description4
Data5+Description5
....
假设上面的字符串有3个部分。第一部分是数据部分。第二部分是 +符号,第三部分是描述部分。
我在代码中的其他地方有另一个函数返回一个字符串。现在这个字符串的形式是:
Retrieved_Name
此 Retrieved_Name 将始终与上面的Data1 ... Data n之一匹配。它将与上述字符串的第1部分匹配,直到+符号之前。
注意:此Retrieved_Name字符串始终与上述字符串匹配,直到+符号。而不是在那之后。
我的问题是,只要Retrieved_Name与上面String的第一部分匹配,我就需要返回第三部分.i.e。字符串的描述部分。
我该如何实现?
答案 0 :(得分:1)
link
我在评论中解释了代码。希望它有所帮助。
答案 1 :(得分:0)
我认为你应该使用Map来检索值而不是循环遍历ArrayList。
这将是HashMap的完美候选者。
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class AppUtils {
public static Map<String, String> hMap = null;
public static String TOKEN = "\\+";
public static void main(String[] args) {
List<String> apps = new ArrayList<String>();
apps.add("Data1+Description1");
apps.add("Data2+Description2");
apps.add("Data3+Description3");
apps.add("Data4+Description4");
populateKeyValue(apps);
String retrieved_Name = "Data1";
System.out.println("Key : "+ retrieved_Name + ", Value : "+hMap.get(retrieved_Name));
retrieved_Name = "Data3";
System.out.println("Key : "+ retrieved_Name + ", Value : "+hMap.get(retrieved_Name));
}
public static void populateKeyValue(List<String> list) {
hMap = list.stream().map(s -> s.split(TOKEN, -1))
.filter(strings -> strings.length == 2)
.collect(HashMap::new, (hashMap, str) -> hashMap.put(str[0],str[1]), HashMap::putAll);
}
}
键:数据1,值:描述1
Key:Data3,Value:Description3