【问题标题】:Pick objects that contain all or one but not more?选择包含全部或一个但不包含更多的对象?
【发布时间】:2017-09-24 13:02:06
【问题描述】:

所以我有一个带有成分图的对象(饮料),我想查看它们的列表。

我想找到仅作为我搜索的成分的任何饮料,而不是包含任何其他成分的饮料。

drinkA.ingredients("water","sugar","salt")
drinkB.ingredients("sugar","salt")
drinkC.ingredients("water")
drinkD.ingredients("sugar")
drinkE.ingredients("salt")
drinkF.ingredients("water","sugar")
drinkG.ingredients("water","salt")

所以,如果我寻找水和盐,我想看看

drinkC
drinkE
drinkG

这就是我所拥有的,但它只会给我提供含有我搜索过的成分的饮料等等。

public void findSearchResults(String searchRegex, Gui gui) {
    if(searchRegex.equals("") || searchRegex == null){
        return;
    }
    List<String> multiSearch = new ArrayList<String>();
    if(searchRegex.contains(",")){
        multiSearch = Arrays.asList(searchRegex.split(","));
    }else{
        multiSearch.add(searchRegex);
    }
    int originSize = multiSearch.size();

    gui.drinksToDisplay = new ArrayList<Drink>();
    for(Drink d : allDrinks){
        int regexIn = 0;
        List<String> tempStrs = new ArrayList<String>();
        tempStrs.addAll(multiSearch);
        if(gui.searchStyle.equals("Has only Ingredients")){
            Map<String, String> ingreds = d.getIngredients();
            Set<Entry<String, String>> ingredsSet = ingreds.entrySet();
            Iterator<Entry<String, String>> ingredsIter = ingredsSet.iterator();
            while(ingredsIter.hasNext()){
                Entry<String, String> e = ingredsIter.next();
                for(String s : tempStrs){
                    if(e.getKey().toLowerCase().contains(s.toLowerCase())){
                        tempStrs.remove(s);
                        regexIn++;
                        break;
                    }
                }
                if(regexIn == originSize && tempStrs.isEmpty()){
                    gui.drinksToDisplay.add(d);
                    break;
                }
            }
        }
    }
}

编辑:我添加了更多代码和更多关于我想要完成的信息

【问题讨论】:

  • 你的问题是......
  • 我想找到仅作为我搜索的成分的任何饮料,而不是包含任何其他成分的饮料。
  • 如果您只获取密钥,为什么还要使用条目集?什么是正则表达式?
  • 请提供其他代码
  • 那么您的代码与您的问题有什么关系?它有什么问题吗?如果是这样,它们到底是什么?如果不是,它在那里做什么?寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误重现它所需的最短代码在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:How to create a Minimal, Complete, and Verifiable example

标签: java list hashmap set


【解决方案1】:

我最终弄清楚了如何使它工作,感谢您的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-16
    • 2012-10-18
    • 2010-12-18
    • 2016-06-26
    • 1970-01-01
    • 2014-12-16
    • 2012-07-02
    • 2022-01-15
    相关资源
    最近更新 更多