gpt4 book ai didi

java - 如何访问和修改树形图中 int 数组的元素

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

所以我正在做一个《星际迷航》主题项目,我需要获取船员名单和他们访问过的行星,并为星际舰队生成日志报告。

例如这个...

Guinan,Drema IV
Picard,Gamalon V
Barclay,Valo III
Riker,Theydat IV
Pulaski,Alpha Moon
Troi,Tessen III
...

需要变成这样

Acamar III:
B. Crusher 11
Barclay 6
Data 15
Gomez 3
Guinan 4
Lefler 5
O'Brien 12
Ogawa 4
Picard 5
Pulaski 14
Riker 12
Troi 9
W. Crusher 4
Worf 14
Yar 3
...

为此,我需要使用一个通用结构来自动对传入数据进行排序,因此我决定使用 15 元素的树形图 int数组来存储每个船员访问给定星球的次数。

我的问题是,由于我对 Java 非常陌生,我如何从树形图中的数组元素中获取值更新该值 在给定的数组元素内?我的问题是,我能找到的有关使用树形图的所有示例要么不涉及其中的数组,要么 don't show how to get a value and update values after the first insertion 。下面我给出了我当前的伪代码以及我对如何实现这一目标的最佳猜测。如果有人知道一种方法,或者完全更好的方法,请提出建议。

附注我将实现我需要的循环之后我可以正确编写单个迭代

编辑:为了清楚起见,15 元素 int 数组的每个元素对应于一名机组人员,因此例如数据将是 array[2]而 Yar 将是 array[14]

import java.util.*;
public class TreeMapDemo {

public static void main(String args[]) {
// Create a hash map
TreeMap tm = new TreeMap();
int indexDesired;
int visits;
String planetNameVariable;
String crewMemberName;

//Scan input using Scanner and assign planet name and crew name to
//correct variables (code provided by instructor)

// Put elements to the map
//if(planet doesn't already exist in tm)
tm.put(planetNameVariable, new int[14]);

//Decides which element of the array must be incremented
indexDesired = crewToIndex(crewMemberName);

//Increments visit count of crewMemberName on planetNameVariable
visits = //How do I get the value of the array associated with planetNameVariable at indexDesired?
tm.put(planetNameVariable, int[indexDesired] = visits + 1 //How do I insert into an array element here?);

// Get an iterator
Iterator i = set.iterator();

// Display element
// Code not designed yet

}
}

最佳答案

你可以这样。在这里,您只需将数组放入 map 一次,因为之后您将仅获得引用,因此如果您修改它,它也会在 map 中进行修改。[浅复制]

int visits[] = null;
// Increments visit count of crewMemberName on planetNameVariable
visits = tm.get(planetNameVariable);
if (visits == null) {
tm.put(planetNameVariable, new int[14]);
visits = tm.get(planetNameVariable);
}
visits[indexDesired]++;

// Get an iterator
Iterator<String> iterator = tm.keySet().iterator();
while (iterator.hasNext()) {
String key = iterator.next();
int[] temp = tm.get(key);
if (temp != null) {
for (int i = 0; i < temp.length; i++) {
System.out.println(key + " " + temp[i]);
}
}
}

关于java - 如何访问和修改树形图中 int 数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39843577/

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