如何在Java中获取一系列值

如何在Java中获取一系列值,java,generics,range,Java,Generics,Range,我想得到一系列值,比如Python中的range函数 # Python range a = range(0,1.0,0.01) b = range(5,10,2) 在Java中,我希望得到列表这样的结果 // Java range public class range{ private double start; private double end; private double step; public range(double start,double

我想得到一系列值,比如Python中的range函数

# Python range
a = range(0,1.0,0.01)
b = range(5,10,2)
在Java中,我希望得到列表这样的结果

// Java range
public class range{

    private double start;
    private double end;
    private double step;

    public range(double start,double end, double step) {
        this.start = start;
        this.end = end;
        this.step = step;
    }

    public List<Double> asList(){
        List<Double> ret = new ArrayList<Double>();
        for(double i = this.start;i <= this.end; i += this.step){
            ret.add(i);
        }

        return ret;
    }   
}
//Java范围
公共类范围{
私人双启动;
专用双端;
私人双台阶;
公共范围(双起点、双终点、双台阶){
this.start=start;
this.end=end;
这个步骤=步骤;
}
公共列表asList(){
List ret=new ArrayList();

对于(double i=this.start;i您可以使用流生成范围并将其收集到列表中

IntStream.range(0, 10)
         .collect(Collectors.toList());
请注意,第一个数字是包含的,第二个是独占的。您可以使用rangeClosed方法包含第二个参数。


其他原语还有其他类型的流(例如,请参见DoubleStream.iterate)。

您可以使用流生成范围并将其收集到列表中

IntStream.range(0, 10)
         .collect(Collectors.toList());
请注意,第一个数字是包含的,第二个是独占的。您可以使用rangeClosed方法包含第二个参数。


其他原语还有其他类型的流(例如,请参见DoubleStream.iterate)。

如果您需要生成任何类型的数字,并且允许您使用第三方库,我建议您使用

最上面的,
范围
用于对范围进行操作,如“数学抽象”。但您可以从范围生成序列:

Set<Integer> set = ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());
// set contains [2, 3, 4]
Set-Set=ContiguousSet.create(Range.closed(1,5),DiscreteDomain.integers());
//集合包含[2,3,4]
默认情况下,Guava为您提供三种离散域:整数、长整数和大整数。但您可以创建自己的域:

您可以创建自己的DiscreteDomain对象,但必须记住DiscreteDomain契约的几个重要方面


请咨询离散域的实现特性。

如果您需要生成任何类型的数字,并且允许您使用第三方库,我建议您使用

最上面的,
范围
用于对范围进行操作,如“数学抽象”。但您可以从范围生成序列:

Set<Integer> set = ContiguousSet.create(Range.closed(1, 5), DiscreteDomain.integers());
// set contains [2, 3, 4]
Set-Set=ContiguousSet.create(Range.closed(1,5),DiscreteDomain.integers());
//集合包含[2,3,4]
默认情况下,Guava为您提供三种离散域:整数、长整数和大整数。但您可以创建自己的域:

您可以创建自己的DiscreteDomain对象,但必须记住DiscreteDomain契约的几个重要方面



请参考
离散域
实现特性。

什么是“计算冗余”?你是否需要像Python那样为所有基本类型提供通用解决方案?@muzzlator如果我将整数放入构造函数,它们将被视为双精度。在计算asList时,我认为不需要双精度。这是错误吗?@ilya是的,我希望知道。什么是“计算冗余”?你是否需要一个针对所有基本类型的通用解决方案,正如Python所做的那样?@muzzlator如果我将整数放入构造函数,它们将被视为double。在asList的计算中,我认为double的精度是不需要的。这是错的吗?@ilya是的,我希望知道。此外,还有一个方法,其中包括两端re也是其他一些原语的其他流类型(例如,请参见DoubleStream.generate或iterate)您能编辑您的答案并包含所有这些附加信息吗?这是一个简单的解决方案。谢谢。Java SE 7中是否有类似的方法?除此之外,还有一个方法,其中包括两端。对于一些其他原语,还有其他流类型(例如,请参阅DoubleStream.generate或iterate)您能编辑您的答案并包含所有这些附加信息吗?这是一个简单的解决方案。谢谢。Java SE 7中的方法类似吗?谢谢,这个库对我的目的很有用。谢谢,这个库对我的目的很有用。