gpt4 book ai didi

java - 将 map 的返回字符串格式化为字符串但出现错误

转载 作者:行者123 更新时间:2023-12-01 14:04:21 24 4
gpt4 key购买 nike

我有这个

import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Scanner;
import static java.lang.System.*;

public class Relatives
{
private Map<String,Set<String>> map;


public Relatives()
{
map = new TreeMap<String,Set<String>>();
}

public void setPersonRelative(String line)
{
String[] personRelative = line.split(" ");
String person = personRelative[0];
String relative = personRelative[1];

if(map.containsKey(person))
{
map.get(person).add(relative);
}
else
{
Set<String> relatives = new TreeSet<String>();
relatives.add(relative);
map.put(person,relatives);
}
}

/**
* Returns the String version of the set containing person's relatives
* (see last line of sample output)
* @param person the person whose relative set should be returned as a String
* @param the string version of person's relative set
*/
public String getRelatives(String person)
{
return map.keySet();
}

如何以字符串形式返回 map 并使其看起来像这样

Bob is related to John Tom
Dot is related to Chuck Fred Jason Tom
Elton is related to Linh

我尝试过类型转换,尽管我认为它不会起作用并解析它也不起作用,这就是我目前所拥有的

最佳答案

我会从这样的事情开始:

public String getRelatives(String person)
{
StringBuilder sb = new StringBuilder();
sb.append(person);
sb.append(" is related to ");
for(String relative : map.get(person))
{
sb.append(relative);
sb.append(' ');
}
return sb.toString();
}

或者,如果您想变得更复杂一点,并处理某人与任何人都没有良好关系的情况:

public String getRelatives(String person)
{
StringBuilder sb = new StringBuilder();
sb.append(person);
Set<String> relatives = map.get(person);
if(relatives == null || relatives.isEmpty())
{
sb.append("is not related to anyone.");
}
else
{
sb.append(" is related to ");
for(String relative : relatives)
{
sb.append(relative);
sb.append(' ');
}
}
return sb.toString();
}

只要您正确初始化了 map 以及 map 映射到的集合,就应该没问题。

基本上,您创建一个 StringBuilder (这可能有点过分,但这仍然是一个很好的做法),用您想要的东西填充它,然后调用它的 .toString()方法。

for 循环只是迭代 Set 的内容,并将亲戚的名字填充到 StringBuilder 中,以及一个空格字符来分隔事物。

<小时/>

其他说明:

private Map<String,Set<String>> map;


public Relatives()
{
map = new TreeMap<String,Set<String>>();
}

可以是:

private Map<String, Set<String>> map = new TreeMap<String, Set<String>>();

或者,如果使用 Java 7,只需:

private Map<String, Set<String>> map = new TreeMap<>();

(请注意,如果只是为了初始化 map ,则不需要显式构造函数)

我也会改变这个:

if(map.containsKey(person))
{
map.get(person).add(relative);
}
else
{
Set<String> relatives = new TreeSet<String>();
relatives.add(relative);
map.put(person,relatives);
}

致:

if(!map.containsKey(person))
{
map.put(person, new TreeSet<String>());
}
map.get(person).add(relative);

更简单,避免冗余

关于java - 将 map 的返回字符串格式化为字符串但出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19040622/

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