`
sunxboy
  • 浏览: 2865030 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Guava小功能收集

 
阅读更多

自定义过滤条件的集合

List<Integer> numbers = Lists.newArrayList(1, 2, 3, 6, 10, 34, 57, 89);
Predicate<Integer> acceptEven = new Predicate<Integer>() {
    @Override
    public boolean apply(Integer number) {
        return (number % 2) == 0;
    }
};
List<Integer> evenNumbers = Lists.newArrayList(Collections2.filter(numbers, acceptEven));
Integer found = Collections.binarySearch(evenNumbers, 57);
assertThat(found, lessThan(0));

 从集合中剔除掉空值

List<String> withNulls = Lists.newArrayList("a", "bc", null, "def");
Iterable<String> withoutNuls = Iterables.filter(withNulls, Predicates.notNull());
assertTrue(Iterables.all(withoutNuls, Predicates.notNull()));

 从集合中检查某一个条件

List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
Predicate<Integer> acceptEven = new Predicate<Integer>() {
    @Override
    public boolean apply(Integer number) {
        return (number % 2) == 0;
    }
};
assertTrue(Iterables.all(evenNumbers, acceptEven));

 集合的反向过滤

List<Integer> evenNumbers = Lists.newArrayList(2, 6, 8, 10, 34, 90);
Predicate<Integer> acceptOdd = new Predicate<Integer>() {
    @Override
    public boolean apply(Integer number) {
        return (number % 2) != 0;
    }
};
assertTrue(Iterables.all(evenNumbers, Predicates.not(acceptOdd)));

 集合元素类型转换

List<Integer> numbers = Lists.newArrayList(1, 2, 3);
List<String> asStrings = Lists.transform(numbers, Functions.toStringFunction());
assertThat(asStrings, contains("1", "2", "3"));

 集合的排序

List<Integer> numbers = Arrays.asList(2, 1, 11, 100, 8, 14);
Ordering<Object> ordering = Ordering.natural().onResultOf(Functions.toStringFunction());
List<Integer> inAlphabeticalOrder = ordering.sortedCopy(numbers);
List<Integer> correctAlphabeticalOrder = Lists.newArrayList(1, 100, 11, 14, 2, 8);
assertThat(correctAlphabeticalOrder, equalTo(inAlphabeticalOrder));

 集合的过滤与功能化

List<Integer> numbers = Arrays.asList(2, 1, 11, 100, 8, 14);
Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() {
    @Override
    public boolean apply(Integer number) {
        return (number % 2) == 0;
    }
};
Function<Integer, Integer> powerOfTwo = new Function<Integer, Integer>() {
    @Override
    public Integer apply(Integer input) {
        return (int) Math.pow(input, 2);
    }
};
 
FluentIterable<Integer> powerOfTwoOnlyForEvenNumbers = 
FluentIterable.from(numbers).filter(acceptEvenNumber).transform(powerOfTwo);
assertThat(powerOfTwoOnlyForEvenNumbers, contains(4, 10000, 64, 196));

 集合功能块的结合

List<Integer> numbers = Arrays.asList(2, 3);
Function<Integer, Integer> powerOfTwo = new Function<Integer, Integer>() {
    @Override
    public Integer apply(Integer input) {
        return (int) Math.pow(input, 2);
    }
};
List<Integer> result = Lists.transform(numbers, 
    Functions.compose(powerOfTwo, powerOfTwo));
assertThat(result, contains(16, 81));

 集合通过过滤器创建功能块

List<Integer> numbers = Lists.newArrayList(1, 2, 3, 6);
Predicate<Integer> acceptEvenNumber = new Predicate<Integer>() {
    @Override
    public boolean apply(Integer number) {
        return (number % 2) == 0;
    }
};
Function<Integer, Boolean> isEventNumberFunction = Functions.forPredicate(acceptEvenNumber);
List<Boolean> areNumbersEven = Lists.transform(numbers, isEventNumberFunction);
 
assertThat(areNumbersEven, contains(false, true, false, true));
分享到:
评论

相关推荐

    java集合分组(Guava)

    Guava是Google推出的一个强大的Java工具包,其中的Multiset、Multimap和GroupingBy等功能提供了高级的集合操作,特别是对于集合的分组功能,它提供了一种高效且灵活的方式。 首先,我们需要理解Guava中的`...

    GuavaCollectors:Java流收集器用于Guava的收集

    通过使用这些定制的收集器,开发者可以更好地利用Java 8的Stream API,同时享受到Guava库带来的强大功能。在实际项目中,可以根据具体需求选择合适的GuavaCollectors来优化数据处理流程,提升代码质量和性能。

    guava-gwt-12.0-rc2.zip

    这种代理允许开发者通过网络对应用进行操作,比如收集性能数据、控制应用状态,甚至更新配置。 6. **开源文化与许可证**:开源项目意味着代码公开,遵循特定的开源许可证(如Apache 2.0、MIT或GPL等)。这些许可证...

    google-collect工具的jar包

    谷歌收集库(Google Collections Library),现称为Guava库,是Google提供的一套强大的Java工具类集合,用于提高开发效率和代码质量。这个“google-collect工具的jar包”包含了Guava库的主要功能,适用于Android开发...

    flume+kafka+flink+mysql数据统计

    在本场景中,Flume 可以从 Nginx 服务器收集 Web 服务器的日志数据,这些数据可能包含访问者信息、请求路径、响应时间等关键指标。Flume 提供了灵活的数据源、通道和接收器配置,使得数据收集过程稳定且可扩展。 ...

    Java默认方法功能详解.pdf

    除了Java 8内置的排序功能,开发者还可以利用第三方库如Guava和Apache Commons来处理列表排序。Guava提供了丰富的函数式编程工具,包括`ComparisonChain`用于构建复杂的比较器,而Apache Commons提供了`...

    办公室数据收集java源码-4.rar.rar

    8. **第三方库**:"还需要依赖其他的库具体是什么我也忘了.txt" 这个文件名表明项目可能依赖一些外部库,例如Apache Commons、Google Guava、Jackson或Gson等,这些库可以提供额外的功能,如数据序列化、日期时间...

    java必须第三方jar文件

    2. **Google Guava**:Guava提供了大量的核心库,包括集合、缓存、并发工具、I/O工具,以及字符串处理等功能,极大地提高了开发效率。 3. **Spring框架**:Spring是企业级Java应用的基石,提供了IOC(Inversion of ...

    随便收集的工具类.rar

    "随便收集的工具类.rar"这个压缩包可能包含了一系列不同功能的工具类,用于处理各种常见的编程任务。虽然标题和描述较为简洁,但我们可以通过标签“资料”推测这是一份与学习、参考或分享有关的资源集合。 在Java...

    java实现银行柜员业务绩效考核系统.rar

    Java提供了丰富的库,如Apache Commons Lang和Google Guava,用于数据验证和格式化。此外,可以使用JavaFX或Swing构建图形用户界面,方便用户输入和查看数据。 接着,**处理模块**是系统的核心,它对输入的数据进行...

    zookeeper的jar包

    1. **guava-20.0-hal.jar**:这是Google的Guava库,提供了许多Java集合框架的增强功能,如并发、缓存、原生类型支持、函数式编程工具等。在Zookeeper中,Guava用于提供高效的实用工具类和数据结构。 2. **zookeeper...

    自己收集的一些Jar包,可以供大家使用

    4. **第三方库**: 还有一些JAR可能是来自其他第三方库,如Apache Commons、Google Guava、Jackson JSON库等,它们提供了丰富的工具类和功能,如IO操作、数据处理、网络通信等。 5. **构建工具**: 如果你看到`maven-...

    javalibsjar包

    2. **Guava**:Google的Guava库提供了一系列高级数据结构、集合框架和实用工具类,如多线程工具、缓存机制、事件处理等。 3. **Spring Framework**:这是一个全面的应用程序开发框架,用于构建Java企业级应用。它...

    mango:用于快速应用程序开发的通用实用程序

    卡里斯芒果 Mango为云工具包提供了常见的可重用实用程序。 配料器 Batcher实用程序提供了一种易于配置的方法,可以根据大小和时间生成批量触发的数据。... 这些实用程序大多数都提供了Guava提供的功能

    mybaties中lib.zip

    5. **Guava库**:`guava-x.x.x.jar`提供了大量的Java集合框架、并发库、原生类型支持、字符串处理等功能,MyBatis在某些地方可能依赖Guava库。 6. **其他依赖**:根据项目的具体需求,`lib.zip`可能还包括其他辅助...

    opensocialjava版shindig使用jar包

    这时,手动收集并添加这些jar包就显得尤为重要。 该压缩包中包含的是在开发OpenSocial Java版Shindig时可能需要用到的全部jar包。注意,由于文件大小或上传限制,这些jar包可能被分为两个资源进行上传,因此在使用...

    java很难找的jar集合.zip

    "java很难找的jar集合.zip"这个压缩包很可能收集了一些在常规渠道不易获取或者针对特定项目需求的特殊jar包。这些jar可能包含了各种开源框架、库、工具或特定功能实现,对于Java开发者来说是宝贵的资源。 1. **开源...

    极光推送服务端(java)所需jar包

    8. **guava-*.jar**:Google的Guava库提供了一套广泛使用的Java工具类,包括集合、缓存、并发工具、I/O操作等,有助于提高代码质量和效率。 9. **其他依赖库**:可能还有其他与数据库访问、加密、线程管理等相关的...

    elasticsearch-repository-oss-6.7.0.zip

    Elasticsearch是一款强大的开源搜索引擎,它提供实时、分布式、全文检索功能,被广泛应用于数据分析、日志收集等领域。在Elasticsearch中,快照(Snapshot)是数据备份的重要手段,可帮助用户在灾难性事件发生时恢复...

    项目典型数据应用缓存的jvm之旅

    1. 设置合理的堆内存大小:过大可能导致垃圾收集效率降低,过小可能导致频繁的Full GC。我们需要根据应用的实际情况,通过-Xms和-Xmx参数来设置初始和最大堆内存。 2. 调整新生代和老年代的比例:新生代存放新创建...

Global site tag (gtag.js) - Google Analytics