初始化HashMap后,将插入值。但在尝试打印值时,不会打印所有值。我正在尝试解决this问题。
代码如下:
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");*/
}
}
}
输出:
不打印值2和4。它们不是由HashMap迭代的。有什么问题?
答案 0 :(得分:5)
每个键只能有一个值。
如果将值4置于键2,然后将值5置于同一键,则覆盖旧值。只有最后一个(5)保留在地图中。
答案 1 :(得分:1)
根本问题是您使用的是错误的数据结构。你没有使用它是地图的事实。您只能将它用作点列表。最好的解决方案是用点列表替换它,如以下程序所示:
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);
}
}
}
输出:
x: 2 y: 4
x: 2 y: 5
x: 7 y: 14