只要这三个前缀是您唯一关心的问题,我建议您这样做:
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) ) );
如果您开始添加更多的前缀以进行过滤或排序,那么该解决方案肯定无法很好地扩展,因为您必须不断更新过滤器和每个前缀的权重。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)