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 数据分组
输入两个文件,最好是选择输入文件而不是在代码里指定输入文件(这个我一直没弄好。)
可以这样解决,用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;
}
}
}
}