gpt4 book ai didi

java - 将并行数组复制到新的并行数组而不重复

转载 作者:行者123 更新时间:2023-12-01 11:06:56 25 4
gpt4 key购买 nike

我正在编写一个方法,它采用两个并行数组和一个 int 大小变量来跟踪索引。例如

String[] names = new String[100]; //Partially filled array
int[] scores = new int[names.length]; //Scores for each plater
int entry = 0;

names[size] = "Bob";
scores[size] = 20;
size++;

上面的代码表明,在我的“列表”中的第一个条目中,Bob 的得分为 20。

我正在编写一个方法,它采用名称数组、分数数组和大小变量。我必须将传递的数组信息复制到新数组,但将重复条目复制到一个条目中,并将它们的总和对齐。

例如,如果有原始列表

Name: Bob, Score: 20
Name: Paul, Score: 30
Name: Bob, Score: 10
//Size - 3

所以我的新并行数组一定是

Name: Bob, Score: 30
Name: Paul, Score 30
//Size - 2

我创建了一个方法,它确实添加了名称的总和,但我陷入了删除重复项的过程。

public static void totalDurations(String[] oldNames, int[] oldScores, int oldSize) {

String[] newNames = new String[100];
int[] newScores = new int[newNames.length];
int newSize = 0;

int matchPos;
int addDuration = 0;

String tempString = null;

for (int i = 0; i < oldSize; i++) {

//the find method returns the index of a string if found else it returns -1
matchPos = find(oldNames, oldSize, 0, oldNames[i]);

while (matchPos >= 0) {

addDuration += oldScores[matchPos];

// Find the next match, starting after the last one
matchPos = find(oldNames, oldSize, matchPos + 1, oldNames[i]);

}



newNames[newSize] = oldNames[i];
newScores[newSize] = addDuration;
addDuration = 0;
newSize++;

}

//Print the List
for (int i = 0; i < newSize; i++) {
System.out.println("Name: " + newNames[i] + ", Score: " + newScores[i] );
}

}

如果我通过了条目

"Bob", 10
"Bob", 10
"Paul", 20
"Paul", 20
"Bob", 10

我的输出是

Name: Bob, Score: 30
Name: Bob, Score: 30
Name: Paul, Score: 40
Name: Paul, Score: 40
Name: Bob, Score: 30

对于我的主要问题。我可以使用什么好的算法将名称和总分复制到新数组仅一次。但请记住,由于重复,列表的新大小将始终小于旧列表。

提前谢谢您。

我想仅使用数组和条件循环来实现此目的。

最佳答案

使用name作为score作为创建 map 。如果您发现 name 已存在,请检索其值,将当前的 score 添加到检索到的 score 中,然后通过放入新的 score 来更新它得分进入 map 。

在初始 name[]score[] 数组上完成此操作后,迭代 map 的 EntrySet并将每个名称和分数添加到各自的新数组[]中。

(顺便说一句,这与并行处理或多线程无关。)

关于java - 将并行数组复制到新的并行数组而不重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32854034/

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