Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,值不会在HashMap中迭代_Java_Iterator_Hashmap - Fatal编程技术网

在Java中,值不会在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

初始化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 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,但我需要找到复制和连接字符串的最大次数。因此,出于此目的。否则,它会告诉您已超过时间