从类似于SQL LIKE'%search%'的数组中过滤值

时间:2018-11-02 17:20:22

标签: java android json

所以我有一个数组,我想知道是否有一种过滤数据的方法,以便如果我想搜索“牛奶加仑”,如果我只输入牛奶,我仍然会找到匹配项。 这是一个JSONArray,但我想它的行为就像一个普通的数组。

它应该像SQL中的LIKE语句一样工作,您只需要比较它并获得相似的结果

我一直在搜索,但是没有发现任何对我有帮助的东西,我只是想知道是否有可能,以及如何使它适应Android Studio, 在此先感谢

我的JSONArray:

[
    {
        "id":"1",
        "itemCode":"5674779",
        "qtyOnHand":"1",
        "itemDesc":"TEST",
        "itemPrice":87,
        "itemRetail":"100.00",
        "itemWholesale":"0",
        "itemTax":"",
        "itemTaxes":"1",
        "itemCurrency":"\u20a1",
        "itemWTaxes":null
    },
    {
        "id":"2",
        "itemCode":"8215651",
        "qtyOnHand":"0",
        "itemDesc":"PRODUCTO EN DOLARES",
        "itemPrice":38.4975,
        "itemRetail":"44.25",
        "itemWholesale":"0",
        "itemTax":"",
        "itemTaxes":"1",
        "itemCurrency":"$",
        "itemWTaxes":null
    }
]

2 个答案:

答案 0 :(得分:2)

如果您想使用LINQ之类的东西,请查看以下内容: What is the Java equivalent for LINQ?

如果没有,也许您可​​以尝试使用for,.contains和另一个arraylist来存储结果的工作方法:

for (String something : yourArray) {
        if (something.contains("milk")) {
            arrayWithResults.add(something);
        }
    }

答案 1 :(得分:1)

假设您有一个类似{"Gallon of Milk", "Beer Can", "Glass of Milk", "Empty"}的数组,则可以通过以下方式对其进行过滤:

String[] array = {"Gallon of Milk", "Beer Can", "Glass of Milk", "Empty"};
List<String> list = new ArrayList<>(Arrays.asList(array));

List<String> filtered = list.stream()
        .filter(s -> s.contains("Milk")).collect(Collectors.toList());

for (String s : filtered) {
    System.out.println(s);
}

将打印:

Gallon of Milk
Glass of Milk