在Java中,值不会在HashMap中迭代
初始化HashMap后,将插入值。但是,在尝试打印值时,不会打印所有值。我正在努力解决这个问题 代码如下:在Java中,值不会在HashMap中迭代,java,iterator,hashmap,Java,Iterator,Hashmap,初始化HashMap后,将插入值。但是,在尝试打印值时,不会打印所有值。我正在努力解决这个问题 代码如下: import java.util.Scanner; import java.util.HashMap; import java.util.Iterator; public class test { public static void main(String args[]) throws Exception { Scanner input = new Sc
import java.util.Scanner;
import java.util.HashMap;
import java.util.Iterator;
public class test
{
public static void main(String args[]) throws Exception
{
Scanner input = new Scanner(System.in);
String inputString = input.next();
int cases = input.nextInt();
long max = 0;
HashMap<Long, Long> points = new HashMap<>();
while(cases>0)
{
points.put(input.nextLong(), input.nextLong());
cases--;
}
Iterator iterator = points.keySet().iterator();
while(iterator.hasNext())
{
long x = (Long)iterator.next();
long y = points.get(x);
if(x>max)
max = x;
if(y>max)
max = y;
}
while(inputString.length()<=max)
inputString = inputString.concat(inputString);
iterator = points.keySet().iterator();
while(iterator.hasNext())
{
long x = (Long)iterator.next();
long y = points.get(x);
System.out.println("x: "+x+" y: "+y);
/* if(inputString.charAt(new Long(x-1).intValue()) == inputString.charAt(new Long(y-1).intValue()))
System.out.println("Yes");
else
System.out.println("No");*/
}
}
}
import java.util.Scanner;
导入java.util.HashMap;
导入java.util.Iterator;
公开课考试
{
公共静态void main(字符串args[])引发异常
{
扫描仪输入=新扫描仪(System.in);
字符串inputString=input.next();
int cases=input.nextInt();
长最大值=0;
HashMap points=新的HashMap();
而(例数>0)
{
points.put(input.nextLong(),input.nextLong());
案例--;
}
迭代器迭代器=points.keySet().Iterator();
while(iterator.hasNext())
{
长x=(长)迭代器.next();
长y=点。获取(x);
如果(x>最大值)
max=x;
如果(y>最大值)
max=y;
}
while(inputString.length()映射每个键只能有一个值
如果将值4添加到键2,然后将值5添加到同一键,则会覆盖旧值。只有最后一个值(5)保留在映射中。映射每个键只能有一个值
如果将值4放入键2,然后将值5放入同一键,则会覆盖旧值。仅最后一个值(5)保留在地图中。根本问题是您使用了错误的数据结构。您没有使用地图这一事实。您只将其用作点列表。最佳解决方案是将其替换为点列表,如以下程序所示:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<int[]> points = new ArrayList<int[]>();
points.add(new int[]{2,4});
points.add(new int[]{2,5});
points.add(new int[]{7,14});
for(int[] point : points){
int x = point[0];
int y = point[1];
System.out.println("x: "+x+" y: "+y);
}
}
}
根本问题是您使用了错误的数据结构。您没有使用地图这一事实。您仅将其用作点列表。最佳解决方案是将其替换为点列表,如以下程序所示:
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<int[]> points = new ArrayList<int[]>();
points.add(new int[]{2,4});
points.add(new int[]{2,5});
points.add(new int[]{7,14});
for(int[] point : points){
int x = point[0];
int y = point[1];
System.out.println("x: "+x+" y: "+y);
}
}
}
您不需要存储输入来解决该问题。只需检查输入并按输入行生成输出(然后丢弃输入).Bohemian,但我需要找到复制和连接字符串的最大次数。因此,出于此目的。否则它会告诉你时间已过。你不需要存储输入来解决该问题。只需检查输入并生成每个输入行的输出(并丢弃输入).Bohemian,但我需要找到复制和连接字符串的最大次数。因此,出于此目的。否则,它会告诉您已超过时间