「java求区间」java求区间交集
本篇文章给大家谈谈java求区间,以及java求区间交集对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、java 怎么取区间范围
- 2、java 统计数字所属区间
- 3、java 算法 求 区间 之间的间断值之和
- 4、java怎样将集合中的数值数据分区间统计个数:例如(0-1000)有几个人数据,1000-2000有几个数据
java 怎么取区间范围
你这个有点抽象了啊,。。。
那就1-199301-100【扶额
你的表达我不是很明白,你想用什么方式算范围。
我所理解的是你可以选择用数组去标记,发了的在下标范围内记为1,没发的初始值为0
当然你这种连续的值可以只标记200和300,减轻工作量,不过在计算范围的时候还要全部遍历一遍。
java 统计数字所属区间
int array[] = {1,2,101,220,1100,2300,1,10,230,220,2,1100};
int arr2[]=null; //用数组存储array数组元素在各个区间个数
int max=0;//初始化最大值;
//循环把数组最大值找出来
for (int i = 0; i array.length; i++) {
if(array[i]max){
max=array[i];
}
}
System.out.println("max:"+max);
//计算区间个数,如何最大值不能整除100 要增加一个区间
if(max%100!=0){
arr2=new int[(max/100+1)];
}else{
arr2=new int[(max/100)];
}
//循环array数组元素
for (int i = 0; i array.length; i++) {
//循环arr2数组
for (int j = 0; j arr2.length; j++) {
//判断array数组元素 在那个区间段
if(array[i]=j*100+1 array[i]=(j+1)*100 ){
arr2[j]++;
}
}
}
for (int i = 0; i arr2.length; i++) {
if(i==max/100){
System.out.println("["+((i*100)+1)+"-"+(max)+"]:"+arr2[i]);
}else{
System.out.println("["+((i*100)+1)+"-"+((i+1)*100)+"]:"+arr2[i]);
}
}
随便写的,你尝试下吧
java 算法 求 区间 之间的间断值之和
首先我认为你需要一个区间之间的合并操作,假设你有一个区间类,成员变量有上限和下限,为这个区间类增加一个合并函数,比如(1,5)和(2,4)就合并为(1,5),如果是(1,5)和(2,6)就合并为(1,6)。
当然这里涉及一个不能合并的区间,也就说,这个合并函数具有返回值boolean,返回值表示能否成功合并,不能要返回false。
然后,算法的输入肯定是一个区间数组,数组里是所有的区间。在算法中维护一个新数组,这个数组把能合并的区间都合并在一起,新数组中要保证任意两个区间都是不能合并的,也就是说,遍历输入的数组的每一个区间,在新数组中寻找一个可以合并的区间,如果找不到,则在新数组中单独占一个位置,在每进行一次成功的合并之后,都要搜索新数组,保证新数组的不可合并性。
最后,当搜索输入数组完毕,新数组也建立成功后,再分别计算每个新数组中区间的间断值再求和就是结果了。
java怎样将集合中的数值数据分区间统计个数:例如(0-1000)有几个人数据,1000-2000有几个数据
集合分组统计处理, 实现的方法很多,简单的写几种方法供参考;(理解后,自行扩展完善)
方法一:(Java8流处理粗略版) 该版本存在的问题:有些区间没有数据,就不打印显示该区间
import java.util.*;
import java.util.stream.*;
public class NumberDemo {
public static void main(String[] args) {
ArrayListInteger list = new ArrayListInteger();
int numbers = 10;// 集合里数字的个数
int space = 1000;// 区间的间隔
// 给集合里添加数字
Random rd = new Random();
for (int i = 0; i numbers; i++) {
list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999
}
funStream(list, space);
}
private static void funStream(ArrayListInteger list, int space) {
// 使用流处理 把 数字分组
MapString, ListInteger 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("\t"+v.size()+"个数据");
});
}
}
方法二:(Java8流处理详细版) 就算有的区间是0个数据,照样打印出来
import java.util.*;
import java.util.stream.*;
public class NumberDemo2 {
public static void main(String[] args) {
ArrayListInteger list = new ArrayListInteger();
int numbers = 10;// 集合里数字的个数
int space = 1000;// 区间的间隔
// 给集合里添加数字
Random rd = new Random();
for (int i = 0; i numbers; i++) {
list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999
}
funStream(list, space);
}
private static void funStream(ArrayListInteger list, int space) {
// 使用流处理 把 数字分组
MapInteger, ListInteger map = list.stream().collect(Collectors.groupingBy((num) - {
return num / space;// 分组规则
}));
// 获取集合里的最大值
OptionalInteger maxop = list.stream().collect(Collectors.maxBy(Integer::compareTo));
int max = maxop.orElse(0);
// 计算出区间的数量
int groups = max % space == 0 ? max / space : max / space + 1;
// 打印结果
for (int i = 0; i groups; i++) {
System.out.println("区间:[" + i * space + "," + (i + 1) * space + ")");
System.out.println("\t有" + (map.get(i)==null?0:map.get(i).size()) + "个数据");
// System.out.println("\t"+map.get(i));//把数据打印出来
}
}
}
方法三:(比较传统的方法)
import java.util.*;
public class NumberDemo3 {
public static void main(String[] args) {
ArrayListInteger list = new ArrayListInteger();
int numbers = 10;// 集合里数字的个数
int space = 1000;// 区间的间隔
//给集合里添加数字
Random rd = new Random();
for (int i = 0; i numbers; i++) {
list.add(rd.nextInt(5000)); // 集合里每个数字的范围是0~4999
}
fun(list,space);
}
private static void fun(ArrayListInteger list, int space) {
Collections.sort(list);//排序
int max= list.get(list.size()-1);//取得最大值
int groups = max % space == 0 ? max / space : max / space + 1;//取得区间的数量
HashMapInteger,ArrayListInteger map=new HashMapInteger, ArrayListInteger();//存区间和该区间的数字
for (int i = 0; i groups; i++) {
map.put(i, new ArrayList());
}
//把元素添加到指定的区间
for (int i = 0; i list.size(); i++) {
map.get(list.get(i)/space).add(list.get(i));
}
//打印结果
for (int i = 0; i groups; i++) {
System.out.println("区间:[" + i * space + "," + (i + 1) * space + ")");
System.out.println("\t有"+ map.get(i).size()+"个数据");
//System.out.println("\t"+map.get(i));//把数据打印出来
}
}
}
测试效果如下
区间:[0,1000)
有5个数据
区间:[1000,2000)
有0个数据
区间:[2000,3000)
有1个数据
区间:[3000,4000)
有2个数据
区间:[4000,5000)
有2个数据
关于java求区间和java求区间交集的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。