基于某些序列生成数字的公式

时间:2015-03-10 17:04:59

标签: java

我需要以下方案的java逻辑:

  • 5到100之间的数字,增加5
  • 例如,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95。

我需要一个通用逻辑,当我得到5时它应该被转换为0,对于10它应该是1和15它应该是2,依此类推。可以通过提供这种逻辑来帮助我。

我有一个想法是我可以使用键值对的hashmap。

我们能否拥有比这更好的其他逻辑?

2 个答案:

答案 0 :(得分:2)

只需将序列的公式应用于给定的数字,在您的示例中可以是:

public static void calculate(int number) {
    return (number / 5) - 1;
}

答案 1 :(得分:1)

如果您可以使用Java 8,则可以使用map(x / 5) - 1应用于原始列表的每个元素。

例如:

public static void main(String... args) {
    List<Integer> fiveMultiples = Arrays.asList(5, 10, 15, 20, 25, 30, 35, 40, 45, 50,
                                                55, 60, 65, 60, 75, 80, 85, 90, 95);
    List<Integer> result = fiveMultiples.stream()
                                        .map((x) -> (x / 5) - 1)
                                        .collect(Collectors.toList());
    System.out.println(result);
}

输出:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 11, 14, 15, 16, 17, 18]

这比使用HashMap更优越,因为它更简单,您不需要通过将值存储在表中来花费内存,并且将公式应用于值的成本大致相同使用hashCode()