使用Google集合对列表进行过滤和排序

使用Google集合对列表进行过滤和排序,第1张

使用Google集合对列表进行过滤排序

只要这三个前缀是您唯一关心的问题,我建议您这样做:

    Predicate<String> filter = new Predicate<String>() {        @Override        public boolean apply(String input) { return input.startsWith("src") || input.startsWith("assoc") || input.startsWith("dest");        }    };    Function<String, Integer> assignWeights = new Function<String, Integer>() {        @Override        public Integer apply(String from) { if (from.startsWith("src")) {     return 0; } else if (from.startsWith("assoc")) {     return 1; } else if (from.startsWith("dest")) {     return 2; } else {          throw new IllegalArgrumentException(from + " is not a valid argument"); }        }    };    ImmutableList<String> sortedFiltered = ImmutableList.copyOf( Ordering.natural().onResultOf(assignWeights).sortedCopy(         Iterables.filter(testList, filter) )    );

如果您开始添加更多的前缀以进行过滤或排序,那么该解决方案肯定无法很好地扩展,因为您必须不断更新过滤器和每个前缀的权重。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5500630.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存