社区
Java EE
帖子详情
问个从集合中计算指定数字并分组的方法
lovest317
2014-10-09 08:44:13
有一个集合如
id money
1 33333
2 44444
3 55555
4 66666
输入了一个88888的数字
要计算出所有小于等于这个数字的记录.并分组归类...
一组有多条记录..但这几条记录的money的合要小于等于我输入的数字..需要把所有的分组都列出来...
...全文
249
16
打赏
收藏
问个从集合中计算指定数字并分组的方法
有一个集合如 id money 1 33333 2 44444 3 55555 4 66666 输入了一个88888的数字 要计算出所有小于等于这个数字的记录.并分组归类... 一组有多条记录..但这几条记录的money的合要小于等于我输入的数字..需要把所有的分组都列出来...
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
16 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lovest317
2014-10-17
打赏
举报
回复
还是没结果...哎.
Norris_Zhang
2014-10-13
打赏
举报
回复
想到一个思路,没考虑效率。 首先这个数据集按value排序 5 11111 0 22222 1 33333 2 44444 3 55555 4 66666 现在输入55555 先循环一次,找到原集合中第一个大于输入55555的值的位置:5(位置下标从0开始) 这个位置之前的子集合是我们要计算的数据,之后的数据不用考虑。 然后根据这个下标5得知一共有5条数据,然后就是一个递归排列组合问题了,把所有可能的组合都计算一个和,如果和小于输入55555,则该组合是结果集的一个项。
attilax
2014-10-13
打赏
举报
回复
linq是王道,解决这类型问题。。。
lovest317
2014-10-13
打赏
举报
回复
哎...哪位大神能来个好算法不....
lovest317
2014-10-11
打赏
举报
回复
比如: id money 5 11111 0 22222 1 33333 2 44444 3 55555 4 66666 输入 55555 分为 第一组 0 22222 1 33333 第二组 3 55555 第三组 5 11111 2 44444 第四组 5 11111 1 33333 像这样的... 只要每一组的合小于或等于指定的值就可以.也可以说每一条记录本身就是一个组合..只是可以忽略掉
scmod
2014-10-11
打赏
举报
回复
想了想发现我连怎么取其中任意个数相加求和都不会。。。。 lz你用自己那个加个多线程有用不。。 前面几楼的看了看不懂。。。 sql也写不来。。 智商好捉急啊。。。
scmod
2014-10-11
打赏
举报
回复
哦是这个意思。。。。 那不就是把小于等于的都可能组合都列出来么。。 然后那个集合有序不
lovest317
2014-10-11
打赏
举报
回复
求大神告知啊...
lovest317
2014-10-10
打赏
举报
回复
有什么直接点的方法吗.....就是用存JAVA...
howsun_zh
2014-10-10
打赏
举报
回复
给一个比较笨的方案,但性能绝对没问题。 假设原Map对象为originalMap,现在新建一个与originalMap完全相反的Map,假设叫newMap,newMap的key为originalMap的value,newMap的value为Set<Integer>,即originalMap的key的集合。 搜索时采用二分算法,由于newMap的key是整数,默认是从小到大排好的,现将newMap的key分成左右树,递归对比,符合条件后返回所有左边的集合就是结果。
scmod
2014-10-10
打赏
举报
回复
看不懂啊。。 为什么有两次分组 想要的结果是那样? 比如1,2,3,4 输入6 出来第一组是: {1;1,2;1,3;1,4,;1,2,3} 第二组 {2;1,2;2,3;2,4;1,2,3} 像这样第一次分组按单个? 分组里面分组计算和?
lovest317
2014-10-10
打赏
举报
回复
对的...现在数据有一千条左右.....会有很多结果...所以想求一个好点的方法...现在写的如果几十条记录没问题..上了一百就GC了....
ningbohezhijun
2014-10-10
打赏
举报
回复
这个分组有要求吗,不然不是会存在多种分组的结果,不是吗? 比如: id money 0 22222 1 33333 2 44444 3 55555 4 66666 输入 88888,分组结果是?
lovest317
2014-10-10
打赏
举报
回复
没大神知道吗......
attilax
2014-10-09
打赏
举报
回复
比较好的办法是linq拉。。。类似sql的语法来查询集合。。。但是这个linq要你自己写,要求有的高。 还有个方法是,放入内存数据库,使用sql查询,easy。。推荐这个
lovest317
2014-10-09
打赏
举报
回复
自己顶一下....
如何在对象
集合
中
根据对象的某个属性来对
集合
进行
分组
我们经常在工作
中
会碰到这种情况:让我将对象结合
中
的对象按照对象的某个属性的值进行操作,然后根据值对
集合
中
的对象进行
分组
。 这种情况听上去不是很难,但是在做起来的时候就会很麻烦。对不清楚Java8新特性的朋友来说,你可能会遍历数组对对象属性进行操作判断,然后在创建几个List对象去存储
分组
后的对象,这可能需要十几行代码。 然而今天,我们来学习一下Java8的其
中
一个新特性:
集合
的流式编程,让这种操作只要几行代码搞定。 一. 准备阶段 1.准备好一个实体类 public class Person{ pr
Java8
中
Stream操作
集合
在不了解Stream之前,如果我们有一个对象
集合
,需要获取数据或输入数据的话就需要循环,依次取数据或输入数据。 Java8提供了
集合
的Stream流操作,如果您需要,下面的内容可以供您参考 //获取对象
集合
中
某字段的
数字
和 int =
集合
对象.stream().mapToInt(
集合
的对象类名::某字段的get
方法
).sum() //向对象
集合
中
所有对象放入同一字段值
集合
对象.forEach(函数对象(任意值) -> 函数对象.某字段的set
方法
(输入的值)); //获取对象
集合
中
某
一组数
中
寻找加和最接近某个值的组合 JAVA实现
一组数
中
寻找加和最接近某个值的组合 JAVA 最近帮人做了一个题,就是在一组数
中
寻找一个子
集合
,使得这个子
集合
的数的加和最接近给定的某个值,此外,这些数的类型是浮点数。我第一想到是用01背包问题去解,但是感觉对于整型数好做,浮点数会难以控制精度。再次我给出三种做法,第一种是暴力做法,第二三
中
方法
都是基于蒙特卡洛算法。 1、暴力法 这个
方法
的思路是使用深度优先遍历将给定数组的所有子
集合
给出,在代码
中
,我们按子
集合
内
数字
的个数依次给出,例如对于数组[1,2,3],我们先给出只有一个
数字
的子
集合
[1],[2],[
java8 stream List
集合
的常用流操作
filter
方法
用于通过设置条件过滤出满足条件的元素。以下代码片段使用filter
方法
过滤出空字符串。count
方法
用于统计
集合
内对象的数量,以下代码片段使用filter
方法
过滤出空字符串并计数。distinct
方法
用于去掉重复数据。以下代码片段使用filter
方法
过滤出空字符串并去重。sorted
方法
用于对流进行排序。以下代码片段使用sorted
方法
对
集合
中
的
数字
进行排序。
分组
的字段按照TreeMap的规则进行排序放入Map,底层是TreeMap。map
方法
用于映射每个元素到对应的结果。
超详细的Java8 Stream使用
方法
:筛选、排序、最大值、最小值、计数求和平均数、
分组
、合并、映射、去重等
Stream流式操作的常用使用
方法
关于函数编程的原理可以参考:Java 8函数式编程#Lambda表达式#
方法
引用 超详细的Java8 Stream使用
方法
:筛选、排序、最大值、最小值、计数求和平均数、
分组
、合并、映射等 涉及Stream
中
的如下
方法
:stream()、filter、peek、map、collect、Collectors.toList()、skip、limit、sorted、max、min、distinct、reduce、sum、average、Collectors.groupingBy
Java EE
67,513
社区成员
225,879
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章