gpt4 book ai didi

java - 在 Java 中按值对数组元素进行分组(2 × 2、3 × 3 等)

转载 作者:行者123 更新时间:2023-11-29 05:41:35 24 4
gpt4 key购买 nike

有人帮助我在 Swift 中创建了一个函数,用于计算 ArrayList<Double> 中的出现次数(2 × 2、3 × 3、10 × 10)。 : Swift - Group elements of Array by value (2 by 2, 3 by 3, etc...)

现在我想用 Java 翻译它,但我不确定有几行。我怎样才能做到这一点?

Swift 版本:

func group(_ array: [Int], coef: Int) -> [Int: Int] {
var result:[Int:Int] = [:]

var start = array[0]
var end = start + coef - 1
var arr = array

while start <= array[array.count - 1] {
let count = arr.filter({ $0 >= start && $0 <= end}).count

result[start] = count
start = end + 1
end = start + coef - 1
arr = Array(arr[count...])
}
return result
}

我在 Java 中尝试过的:

private HashMap<Integer, Integer> group(ArrayList<Double> array, int coef, Double start) {
Map<Integer, Integer> result = new HashMap<>();

Double startFrom = start;
Double end = startFrom + Double.valueOf(coef) - 0.1;
ArrayList<Double> arr = array;

// This line
while (startFrom <= array[array.size() - 1]) {

// This line
int count = arr.filter({ $0 >= start && $0 <= end}).count;

// This line
result[Int(start)] = count;
startFrom = end + 1;
end = start + Double.valueOf(coef) - 0.1;
// this line
arr = Array(arr[count...])
}
return result;
}

最佳答案

在Java中,建议使用接口(interface)而不是实际的实现,因为接口(interface)提供了更大的灵 active 。如果您正在使用实现并且必须更改某些内容,那么它很容易损坏,因此您的代码将很脆弱。

private static Map<Integer, Integer> group(List<Double> array, int coef, Double start) {
Map<Integer, Integer> result = new HashMap<>();

Double startFrom = start;
Double finalEnd = startFrom + (double) coef - 1;

while (startFrom <= array.get(array.size() - 1)) {
int counter = 0;
for (Double x : array) {
if (x >= startFrom && x <= finalEnd) {
counter++;
}
}
result.put(startFrom.intValue(), counter);
startFrom = finalEnd + 1;
finalEnd = startFrom + (double) coef - 1;
}
return result;
}

关于java - 在 Java 中按值对数组元素进行分组(2 × 2、3 × 3 等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56498557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com