删除那些属性不在 commons-collections 集合中的属性

发布于 2024-12-17 03:42:35 字数 704 浏览 2 评论 0原文

假设我有一个 foodGroupIds 集合和一个 food 集合。使用commons-collections,如何过滤掉不属于任何食物组的食物?

我可能走在正确的轨道上,但无法弄清楚要使用什么谓词。也许必须创建我自己的?

Collection<Long> ids = collect(
    findGoodFoodGroups(),
    invokerTransformer("getId"));

Collection<Food> food = getAllFood();
filter(food, transformedPredicate(
    invokerTransformer("getFoodGroupId"),
    ?));

在 C# 中,这将是这样的:

var ids = FindGoodFoodGroups().Select(x => x.Id);
var goodFood = FindAllFood().Select(x => ids.Contains(x.FoodGroupId));

我希望所有类型 T 的属性 P 等于集合中的任何 T 的对象>C 具有 T 类型的对象。

Say I have a collection of foodGroupIds and a collection of food. Using commons-collections, how can I filter out the food which does not belong to any of the food groups?

I might be on the right track, but can't figure out what predicate to use. Maybe have to create my own?

Collection<Long> ids = collect(
    findGoodFoodGroups(),
    invokerTransformer("getId"));

Collection<Food> food = getAllFood();
filter(food, transformedPredicate(
    invokerTransformer("getFoodGroupId"),
    ?));

In C# this would be something like this:

var ids = FindGoodFoodGroups().Select(x => x.Id);
var goodFood = FindAllFood().Select(x => ids.Contains(x.FoodGroupId));

I want all objects whose property P of type T is equal to any T in a collection C with objects of type T.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瑶笙 2024-12-24 03:42:35

我认为你可以使用 集合.removeAll(集合)

简单的例子:

    Map food = new HashMap();
    food.put("appleKey", "apple");
    food.put("orangeKey", "orange");
    food.put("tomatoKey", "tomato");

    Set unmatchedKeys = new HashSet(food.keySet());
    unmatchedKeys.removeAll(Arrays.asList("orangeKey"));
    System.err.println(unmatchedKeys);

    Collection unmatchedValues = new ArrayList(food.values());
    unmatchedValues.removeAll(Arrays.asList("apple", "tomato"));
    System.err.println(unmatchedValues);

输出是:

[appleKey, tomatoKey]
[orange]

I think you could use Collection.removeAll(Collection).

Simple examples:

    Map food = new HashMap();
    food.put("appleKey", "apple");
    food.put("orangeKey", "orange");
    food.put("tomatoKey", "tomato");

    Set unmatchedKeys = new HashSet(food.keySet());
    unmatchedKeys.removeAll(Arrays.asList("orangeKey"));
    System.err.println(unmatchedKeys);

    Collection unmatchedValues = new ArrayList(food.values());
    unmatchedValues.removeAll(Arrays.asList("apple", "tomato"));
    System.err.println(unmatchedValues);

Output is:

[appleKey, tomatoKey]
[orange]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文