根据对象值将对象列表压缩为的有效方法是什么
What is a efficient way to condense a List of objects to based on an object value?
我有一个对象数组列表。该对象有五个字段:id、日期、名称、值、adjusted_value。该列表可能包含多个具有相同名称的条目,我很难设计出一种有效的方法来根据名称将列表压缩到类似对象的列表,但存储的值将是name、sum(value)、sum(adjusted_value)。
有有效的方法吗?我当前的方法在do while内部有for循环。
Clarfification:
我有一个obejcts的列表:
{id,date,name,value,ajusted_value},
{1,"10/30/2014","peaches",4,3}
{2,"10/30/2014","apples",2,2}
{3,"10/31/2014","peaches",3,1}
.
.
.
我想将基于名称值的列表压缩为如下所示:
{null,null,"peaches",7,4}
{null,null,"apples",2,2}
.
.
.
然而,我发现HashMap的put()功能会自动执行我想要的操作,但如果可能的话,现在我需要在Javascript中执行这种操作。
您可以定义一个Map,其中键是name
,值是对象实例。
浏览列表,并为每个实例检查它是否存在于映射中。
如果不只是添加到地图上。map.put(instance.name,instance)
如果它已经添加到地图上,只需
mapInstance=map.get(instance.name);
mapInstance.value+=instance.value;
mapInstance.adjusted_value+=instance.adjusted_value;
循环后,您将获得带有分组数据的已填充地图
我将分两步使用Guava
。使用NameFunction
将列表转换为Multimap
。使用CondenseFunction
转换Multimap
的值。
Function<MyClass, String> toName = new Function(){
public String apply(MyClass input){return input.name;}};
ImmutableListMultimap<String, MyClass> multimap = Multimaps.index(myList, toName);
Map<String, Collection<MyClass>> map = multimap.asMap();
Function<Collection<MyClass>, MyClass> condense= new Function(){
public MyClass apply(Collection<MyClass>input){
// create sums here
}};
Map<String, MyClass> condensed = Maps.transformValues(map, condense);
Collection<MyClass> result = condensed.getValues();
Multimaps.index()
Maps.transformValues
相关文章:
- Rails将JavaScript对象存储到Model的有效方式
- 将JS对象数组转换为嵌套形式的最有效方法
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- 如何有效地匹配两个不同 JavaScript 对象上的 id,并将它们合并在一起
- 以有效的方式搜索对象列表 mongo
- Date对象在Chrome中有效,但在Safari、Firefox或IE中无效
- 正在将字符串转换为有效的JSON对象
- 使用一堆 setTimeouts 还是一个 setInterval 来刷新一堆对象更有效
- JSON tv4 对象在 true 且存在其他对象时有效
- JavaScript 中更有效的选项对象
- 为什么这种用于计算数组重复并将其存储到对象中的方法有效
- tizen.filesystem.resolve() error - 对象的内容不包含有效值
- 函数是否是 JavaScript 对象属性的有效键
- JS:为什么这个对象属性不起作用,只有当我把它作为变量放在其中一个方法中时,它才有效
- 使用具有有效 JavaScript 格式的 Json.NET 序列化对象
- 在 JavaScript 中合并多个排序对象数组的最有效方法是什么?
- 有效记忆对象参数
- Javascript:可以访问对象并显示它,但不是该对象的有效属性
- 为什么不'对象点表示法对未知类型的对象有效吗?(TypeError:undefined不是对象)
- 多长时间是从FB打开图形用户对象有效的图片url