导航:首页 > 编程语言 > java数据分组

java数据分组

发布时间:2022-07-23 14:10:52

A. 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个数据

B. java 怎样分组

你好,提问者:
1、J2SE:为java基础部分。用于桌面应用程序。
2、J2EE:网页系统开发。目前最流行的技术。
3、J2ME:手机系统、移动设备的开发。

C. java如何对一堆键值对数据分组

要实现什么功能`按什么要求分组``有什么样数据?

D. Java 对数据分组

把从数据库读出来的ResultSet 传入这个方法

public static Map<Long, List<Long>> orgnaizeData(ResultSet rs) {
Map<Long, List<Long>> result = null;
try {
if (rs.getRow() > 0) {
result = new HashMap<Long, List<Long>>();
while (rs.next()) {
Long key = rs.getLong(1);
Long value = rs.getLong(2);
if (result.containsKey(key)) {
result.get(key).add(value);
} else {
List<Long> valueList = new ArrayList<Long>();
valueList.add(value);
result.put(key, valueList);
}
}
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}

E. java 数据分组

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


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



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


这个我不是很明白

F. java list分组

没明白你要的目的. 是想用list 集合来输出结果.还是在数据库里查询出 这样格式的结果.
如果是在java 后台.可以先创建Map 集合.Map<String,List<Object>> key代表 颜色 及尺寸. value 是一个List 集合.list 中存储 红-1 绿-2 蓝-3 这样的元素..

G. java开发中这种字符串数据归纳分组用什么技术比较快

Java现在有的最多的是JDBC和Hibernater;
而Hibernater的底层也是用JDBC来实现的。
在数据量 很大 的时候,Hibernater可能会有效率问题。那是就选用JDBC来实现。
但是当数据量 特别大 是,JDBC可能也会有效率问题,因为JDBC是用Java实现的。速度上还是有问题的。
那是又会使用其他的方式来直接对数据库经行操作。

H. java截取字符串中的数字,并且分组

用正则表达式按数字和中文的交界处切分字符串,就可以实现你的要求,完整的Java程序如下

public class F{

public static void main(String[] args){

String str="鱼豆腐20海带3掌中宝8鸡翅2可乐2";

String[] s=str.split("(?<=[0-9])(?=[u4e00-u9fa5])");

for(int i=0;i<s.length;i++){

System.out.println(s[i]);

}

}

}

I. Java 随机分组

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

J. 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数据分组相关的资料

热点内容
文件夹常用命令 浏览:203
被调侃的程序员 浏览:489
哪里有无损音乐app下载 浏览:221
单片机如何使用proteus 浏览:991
java常用的服务器 浏览:281
集结APP在哪里下载 浏览:800
欧洲cf玩什么服务器 浏览:529
如何连接另一台电脑上的共享文件夹 浏览:681
如何让桌面文件夹搬家到e盘 浏览:73
java自动格式化 浏览:619
ipad怎么查看文件夹大小 浏览:583
手工粘土解压球 浏览:552
在线视频教育源码 浏览:41
快四十学什么编程 浏览:754
gnumakelinux 浏览:537
视易峰云服务器怎么改系统 浏览:535
javamap取值 浏览:768
mac和win磁盘加密软件 浏览:474
苹果为什么会连接不到服务器 浏览:726
pdf格式文件如何保存 浏览:303