`
sd_zyl
  • 浏览: 44552 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

guava集合分组

 
阅读更多

import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import java.util.Map;

import com.google.common.base.Function;
import com.google.common.collect.Multimap;
import com.google.common.collect.Multimaps;

import lombok.Getter;
import lombok.Setter;

@Setter
@Getter
class Goods {
	private Integer id;
	private Integer groupId;
	private String name;
	
	public String toString() {
		return "{id="+id + ", groupId=" + groupId + ", name=" + name + "}";
	}
}
public class TxAspect {
	public static void main(String[] args) {
	    List<Goods> list = new ArrayList<>();
	    {
	    	Goods e = new Goods();
	    	e.setId(1);
	    	e.setGroupId(1);
	    	e.setName("商品1");
	    	list.add(e);
	    }

	    {
	    	Goods e = new Goods();
	    	e.setId(3);
	    	e.setGroupId(3);
	    	e.setName("商品3");
	    	list.add(e);
	    }
	    {
	    	Goods e = new Goods();
	    	e.setId(4);
	    	e.setGroupId(2);
	    	e.setName("商品4");
	    	list.add(e);
	    }
	    {
	    	Goods e = new Goods();
	    	e.setId(5);
	    	e.setName("商品5");
	    	list.add(e);
	    }
	    {
	    	Goods e = new Goods();
	    	e.setId(2);
	    	e.setGroupId(2);
	    	e.setName("商品2");
	    	list.add(e);
	    }
	    //根据groupId分组, 如果groupId为null, 则放到默认为0的group下
	    Function<Goods, Integer> fun = new Function<Goods, Integer>() {
	        @Override
	        public Integer apply(Goods input) {
	            if (input.getGroupId() == null) {
	                return 0;
	            }
	            return input.getGroupId();
	        }
	    };
	    Multimap<Integer, Goods> index = Multimaps.index(list, fun);
	    Map<Integer, Collection<Goods>> map = index.asMap();
	    for (Map.Entry<Integer, Collection<Goods>> entry : map.entrySet()) {
	    	System.out.println(entry.getKey() + " <---> " + entry.getValue());
	    }
	}
}
分享到:
评论

相关推荐

    java集合分组(Guava)

    总的来说,Guava通过`GroupingBy`、`Multiset`和`Multimap`为Java程序员提供了强大而灵活的集合分组功能。理解并熟练运用这些工具,能够大大提高我们的代码效率和可读性,使我们在处理复杂数据结构时更加得心应手。

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

    Guava是Google的一个开源库,广泛应用于各种Java项目,其提供了许多实用的集合类、缓存机制、并发工具等。在Java 8中,Stream API的引入改变了处理集合的方式,允许进行声明式编程,而GuavaCollectors则进一步丰富了...

    GSCollections受Smalltalk启发的集合框架

    2. **富集合API**:GS Collections提供了许多增强的集合操作,如`select`(过滤)、`reject`(排除)、`collect`(转换)、`groupingBy`(分组)、`zip`(对齐合并)等,这些方法使得代码更加简洁、易读。...

    java ArrayList按照同一属性进行分组

    在这种情况下,可以考虑使用更高效的数据结构,如Guava库提供的Multimap,或者Java 8引入的Stream API进行分组操作。 在使用Stream API进行分组时,代码会变得更加简洁和高效: ```java Map, List&lt;SkuVo&gt;&gt; ...

    java开发工具类

    2. **Guava**:Google提供的Guava库也包含了丰富的工具类,它扩展了Java集合框架,提供了如Multiset、Multimap等高级数据结构,还有如Preconditions、Strings、Charsets等实用工具类。 3. **Java Util**:Java标准...

    tenroon-toolkit 1.2 (Java 功能扩展组件) (过期了)

    3. **集合工具类**:提供对Java集合框架(如List、Set、Map)的辅助操作,如快速排序、过滤、映射、分组等,便于进行数据处理和转换。 4. **IO工具类**:简化文件和流的读写操作,可能包括文件的复制、删除、重命名...

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

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

    Java控制流指令解决问题.pdf

    这里的Stream API首先通过`.stream()`将集合转换为Stream,然后使用`.filter()`方法筛选出价格大于1000的交易,最后通过`.collect()`和`Collectors.groupingBy()`进行分组。这种方式避免了频繁的map访问和手动列表...

    DMS简单小型的数据挖掘

    在Java中,可以使用`HashMap`或`HashSet`来去重数据,使用`ArrayList`或`LinkedList`进行数据存储,而`Stream` API则可以方便地进行集合操作,如过滤、分组和聚合。此外,Apache Commons Lang、Guava等库提供了丰富...

    选择城市功能

    这可以通过Java的集合类或第三方库如Guava的Cache来实现。如果数据量庞大,可以考虑分页加载或按需加载。 4. **事件监听**:当用户选择城市时,需要监听选择事件。Java GUI组件提供了各种事件监听器,如...

    编码理论与密码学:从谜到量子理论Coding Theory and Cryptography: From Enigma to Quantum Theory

    Sage软件集合了大量开源数学软件包,如Maxima、Pynac、SymPy、Singular、GAP、R、Pari、SciPy和libcrypt等,其中libcrypt是用于密码学计算的库。Sage的设计基于主流编程语言Python,它提供了一个统一的界面,允许...

    FastEgoClustering:FastEgoClustering 算法的实现版本,这是我在佛罗里达理工学院博士工作的一部分。 请引用

    在Java环境下实现FastEgoClustering算法,可以利用Java的强大库支持,如JUNG(Java Universal Network/Graph Framework)用于图形操作,Apache Commons Math库进行数学计算,以及Google Guava库提供高效的集合操作。...

    BGGPostProccessor:清理 BBG 文件

    4. **数据清洗**:此步骤包括去除无效、重复或不一致的数据,这可能需要使用到数据处理库,如 Apache Commons Lang 或 Guava,来实现字符串操作和集合处理。 5. **数据结构与算法**:为了高效地处理大量数据,可能...

    java开源包11

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

    java开源包4

    BoneCP很小,只有四十几K(运行时需要slf4j和guava的支持,这二者加起来就不小了),而相比之下 C3P0 要六百多K。 异步输出框架 AsynWriter 一个Java的类库,用于异步输出记录的简单小框架用于高并发下数据输出使用...

Global site tag (gtag.js) - Google Analytics