将String与ArrayList的元素进行比较并返回一个String

时间:2017-11-15 10:42:05

标签: java list arraylist

我有一个使用此代码创建的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。字符串的描述部分。

我该如何实现?

2 个答案:

答案 0 :(得分:1)

link

我在评论中解释了代码。希望它有所帮助。

答案 1 :(得分:0)

我认为你应该使用Map来检索值而不是循环遍历ArrayList。

这将是HashMap的完美候选者。

AppUtils

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