gpt4 book ai didi

Java map 中的树集

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

Java新手,我想做的是检索一个字符串名称,如果多个值之一在如下范围内,则该字符串名称会打印到屏幕上:

public class SuperHeroes {
private Map<String, Set<Integer>> names;
private Set<Integer> pageNum;

/**
* Constructor for objects of class SuperHeroes
*/
public SuperHeroes() {
names = new HashMap<>();
pageNum = new TreeSet<>();
}

/**
* The fill() method creates 2 entries.
*/
public void fill() {
pageNum.add(1);
pageNum.add(3);
pageNum.add(7);
names.put("Kent,Clark", pageNum);

pageNum = new TreeSet<>();
pageNum.add(2);
pageNum.add(6);
pageNum.add(4);
names.put("Wayne,Bruce", pageNum);
}

public void findInRange(int num, int numb) {
for (String eachName: names.keySet()) {
for (int eachNum:pageNum) {
if(eachNum >= num && eachNum <= numb) {
System.out.println(names.get(eachName));
}
}
}
}
}

如果 pageNum 在范围内,打印到屏幕的结果将是 super 英雄的名字。我现在得到的输出是所有数字。任何帮助将不胜感激。如果您能为我指明正确的方向,将会有所帮助。

提前谢谢您。

最佳答案

代码中的第一个错误是定义名称和页号的方式。应该是这样的:

public SuperHeroes() 
{
names = new HashMap<String, Set<Integer>>();
pageNum = new TreeSet<Integer>();
}

现在您可以使用TreesetsubSet()方法来实现您想要的。代码如下:
编辑:
在从names中检索给定名称的Treeset时,需要将返回的值类型转换为TreeSet 类型。将 subset 方法与 tSet 一起使用时也需要执行相同的操作。

   public void findInRange(int num, int numb) 
{
for (String eachName: names.keySet())
{
TreeSet<Integer> tSet = (TreeSet<Integer>)names.get(eachName);
TreeSet<Integer> subSet = new TreeSet<Integer>();
subSet = (TreeSet<Integer>)tSet.subSet(num,true,numb,true);//for JDK 1.6 or above. returns num<=numbers<=numb
//TreeSet<Integer> subSet = tSet.subSet(num-1, numb+1);//for JDK version less than 1.6
if (subSet.size() != 0)
{
System.out.println("Hero is "+eachName);
break;//you can ommit it if you want to print all heroes having pagenum in range num to numb
}
}
}

fill方法也需要修改为:

public void fill() 
{
pageNum.add(1);
pageNum.add(3);
pageNum.add(7);
names.put("Kent,Clark", pageNum);

pageNum = new TreeSet<Integer>();//Use proper way of object construction with generics
pageNum.add(5);
pageNum.add(6);
pageNum.add(4);
names.put("Wayne,Bruce", pageNum);
}

关于Java map 中的树集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034651/

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