导航:首页 > 源码编译 > java数据分组算法

java数据分组算法

发布时间:2022-04-19 15:34:21

java 按日期分组 算法

直接用SQL语句
select count(id) as 数量,day(date) as 生产日期 from table group by day(date) order by day(czrq)

如果库里不止一个月的数据,那么再加个where条件

❷ java数组按照相同的个数分组的实现,求大神!

//模拟一个序列
List<Double>doubles=newArrayList<>();
doubles.add((double)5);
doubles.add((double)4);
doubles.add((double)3);
doubles.add((double)5);
doubles.add(2.2);
doubles.add((double)4);


//定义两个记录的list,他们是同步的,一个记录值,一个记录出现次数
List<Double>star=newArrayList<>();
List<Integer>number=newArrayList<>();

//数字数量分组
for(doublei:doubles){
if(-1!=star.lastIndexOf(i)){
number.add(star.lastIndexOf(i),number.get(star.lastIndexOf(i))+1);
}else{
star.add(i);
number.add(1);
}
}

//打印出结果,得到的序列再根据需求进行处理
for(inti=0;i<star.size();i++){
System.out.println("==========");
System.out.println("star:"+star.get(i));
System.out.println("number:"+number.get(i));
}

❸ java怎样将集合中的数值数据分区间统计个数:例如(0-1000)有几个人数据,1000-2000有几个数据

集合分组统计处理, 实现的方法很多,简单的写几种方法供参考;(理解后,自行扩展完善)

方法一:(Java8流处理粗略版) 该版本存在的问题:有些区间没有数据,就不打印显示该区间

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo{
publicstaticvoidmain(String[]args){

ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里数字的个数
intspace=1000;//区间的间隔

//给集合里添加数字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每个数字的范围是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流处理把数字分组
Map<String,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
return"区间:["+num/space*space+","+(num/space+1)*space+")";//分组规则
}));
map.forEach((k,v)->{
System.out.println(k);
System.out.println(" "+v.size()+"个数据");
});
}
}

方法二:(Java8流处理详细版) 就算有的区间是0个数据,照样打印出来

importjava.util.*;
importjava.util.stream.*;

publicclassNumberDemo2{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里数字的个数
intspace=1000;//区间的间隔

//给集合里添加数字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每个数字的范围是0~4999
}

funStream(list,space);
}

privatestaticvoidfunStream(ArrayList<Integer>list,intspace){
//使用流处理把数字分组
Map<Integer,List<Integer>>map=list.stream().collect(Collectors.groupingBy((num)->{
returnnum/space;//分组规则
}));

//获取集合里的最大值
Optional<Integer>maxop=list.stream().collect(Collectors.maxBy(Integer::compareTo));
intmax=maxop.orElse(0);
//计算出区间的数量
intgroups=max%space==0?max/space:max/space+1;
//打印结果
for(inti=0;i<groups;i++){
System.out.println("区间:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+(map.get(i)==null?0:map.get(i).size())+"个数据");
//System.out.println(" "+map.get(i));//把数据打印出来
}
}
}

方法三:(比较传统的方法)

importjava.util.*;

publicclassNumberDemo3{
publicstaticvoidmain(String[]args){
ArrayList<Integer>list=newArrayList<Integer>();
intnumbers=10;//集合里数字的个数
intspace=1000;//区间的间隔

//给集合里添加数字
Randomrd=newRandom();
for(inti=0;i<numbers;i++){
list.add(rd.nextInt(5000));//集合里每个数字的范围是0~4999
}

fun(list,space);
}
privatestaticvoidfun(ArrayList<Integer>list,intspace){
Collections.sort(list);//排序
intmax=list.get(list.size()-1);//取得最大值
intgroups=max%space==0?max/space:max/space+1;//取得区间的数量
HashMap<Integer,ArrayList<Integer>>map=newHashMap<Integer,ArrayList<Integer>>();//存区间和该区间的数字
for(inti=0;i<groups;i++){
map.put(i,newArrayList<>());
}
//把元素添加到指定的区间
for(inti=0;i<list.size();i++){
map.get(list.get(i)/space).add(list.get(i));
}
//打印结果
for(inti=0;i<groups;i++){
System.out.println("区间:["+i*space+","+(i+1)*space+")");
System.out.println(" 有"+map.get(i).size()+"个数据");
//System.out.println(" "+map.get(i));//把数据打印出来
}
}
}

测试效果如下

区间:[0,1000)
有5个数据
区间:[1000,2000)
有0个数据
区间:[2000,3000)
有1个数据
区间:[3000,4000)
有2个数据
区间:[4000,5000)
有2个数据

❹ java 数据分组

  1. 输入两个文件,最好是选择输入文件而不是在代码里指定输入文件(这个我一直没弄好。)


    可以这样解决,用java中的swing写一个file,然后找到你要的那个文件,接着将其完整的路径用string保存下来,就可以了。



2.输出在samplelist中存在,在a.txt中出现的一组数据(组的定义是指看起来是描述这个事物的一组数据,这个我一直没弄懂该怎么分组)


这个我不是很明白

❺ java中的算法,一共有多少种,哪几种,怎么分类。

就好比问,汉语中常用写作方法有多少种,怎么分类。

算法按用途分,体现设计目的、有什么特点
算法按实现方式分,有递归、迭代、平行、序列、过程、确定、不确定等等
算法按设计范型分,有分治、动态、贪心、线性、图论、简化等等

作为图灵完备的语言,理论上”Java语言“可以实现所有算法。
“Java的标准库'中用了一些常用数据结构和相关算法.

像apache common这样的java库中又提供了一些通用的算法

❻ 求java分组合计算法

这种统计数据直接就能从数据库中查询出来,用sum函数计算求和,用group by进行分组

❼ java 字符串统计分组算法求教

public static void main(String[] args) {
String str = "02 07 13 20 25 27 12 15 16 26 29 31 04 17 23 27 28 32 04 08 16 24 30 32 01 04 05 18 19 25";
String[] strs = str.split(" ");
List<Integer> intList = new ArrayList<Integer>();
for(String s : strs) {
intList.add(Integer.parseInt(s));
}
Collections.sort(intList);
System.out.println("排序后的字符:" + intList );

Map<Integer, List<Integer>> find = new LinkedHashMap<Integer, List<Integer>>();
int max = intList.get(intList.size()-1); //定义要查找的区间
int min = 1;
while(min <= max) {
int count = 0;
for(int i : intList) {
if(min == i) {
count++; //发现次数
}
}
List<Integer> group = find.get(count);
if(group == null)
group = new ArrayList<Integer>();
group.add(min);
find.put(count, group);
min++;
}
for(int count : find.keySet()) {
System.out.println("出现"+count+"次的字符:" + find.get(count));
}
}

没有注重性能,只是简单的实现功能,提供参考

❽ Java 数据分组问题

分组数为3,那么就是两个指针,划分的三个区域即为所求。

好久没做过OJ上的题目了,很水,小范围数据能过,有什么问题一起探讨。

/*
*你的是这个数据
53
12345
*/


importjava.util.Scanner;

publicclassMain
{
publicstaticintN;
publicstaticint[]array;
publicstaticintP;
publicstaticvoidmain(String[]args)
{
Scannerscan=newScanner(System.in);
//N;数组长度
N=scan.nextInt();
//P:集合数
P=scan.nextInt();
array=newint[N];
for(inti=0;i<N;i++)
{
array[i]=scan.nextInt();
}
//不好确定循环次数,用递归解决
startDivide(0,P-1,"");
}

publicstaticvoidstartDivide(intstart,intdeep,Stringanswer)
{
if(deep==-1)
{
//将剩余的输出
for(inti=start;i<Math.min(N-deep,array.length);i++)
{
answer+=""+array[i]+"";
}
System.out.println(answer+"}");
}
else
{
//这步貌似有问题?
if(!answer.equals(""))
{
answer+="}";
}
if(answer.equals("")||answer.charAt(answer.length()-1)=='}')
{
answer+="{";
}
for(inti=start;i<N-deep;i++)
{
answer+=""+array[i]+"";
startDivide(i+1,deep-1,answer);
if(deep==0)
break;
}
}
}
}

❾ Java 随机分组

有一组数据,然后你又每组需要分4个人,到底是一组数据还是多组数据呀,不知道你是不是想把一组 数据分成4份?如果是,给你个思路 ,假如你的这组数据是一个字符串数组a,你就循环a的长度次数,每次都产生一个0到a长度之间的随机数,强转成int,并记录到一个新数组里,这样一直循环取,当然,如果新数组里已经记录的数字不要重复记录,保证这个新数组里装的是唯一的数,并且这些数组里的数字,是你字符串数组的a的下标,然后循环新数组,按新数组里的值做下标去取a数组里的字符,a长度假如是20的话,每隔五个就放在一起,这样分成四份,而且取的顺序是新数组的下标来决定的,而新数组的下标又是随机生成的,。。。这样就达到随机将这组数据分成份了

阅读全文

与java数据分组算法相关的资料

热点内容
谷歌框架服务器地址 浏览:378
女程序员蓝天白云 浏览:829
钢铁命令解说 浏览:252
什么购物app是正品 浏览:478
安卓系统断网怎么回事 浏览:456
黑马程序员第9章 浏览:703
汽车编程所用的函数 浏览:447
云管理服务器如何注册 浏览:208
linux下重启网卡 浏览:118
乐橙怎么加密 浏览:262
幸识是个什么样的app 浏览:54
程序员直男认口红 浏览:37
雕刻机的编程点怎么算 浏览:643
ftp服务器的http地址 浏览:940
单位吨标煤最简单算法 浏览:423
企业微信中设置服务器是什么 浏览:385
闪电侠解压视频 浏览:293
rgb灯条51单片机 浏览:768
问道4月5日为什么服务器超时 浏览:991
服务器的url地址是什么 浏览:973