Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.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中的映射问题_Java_Map - Fatal编程技术网

java中的映射问题

java中的映射问题,java,map,Java,Map,如何在vec中打印随机车辆数量?例如,如果n为2,则打印总线=16 class T { Map<String, Integer> vec = new HashMap<String, Integer>(); List<String> transp = Arrays.asList("Car", "Bus", "Train"); List<Integer> amount = Arrays.asList(58, 16, 33);

如何在vec中打印随机车辆数量?例如,如果n为2,则打印总线=16

class T {

    Map<String, Integer> vec = new HashMap<String, Integer>();
    List<String> transp = Arrays.asList("Car", "Bus", "Train");
    List<Integer> amount = Arrays.asList(58, 16, 33);

    int val() {
        for (int i = 0; i < vec.size(); i++)
            vec.put(transp.get(i), amount.get(i));
        System.out.println(vec);
        Random rand = new Random();
        int n = 0 + rand.nextInt(vec.size());
    }
}
T类{
Map vec=新的HashMap();
List transp=Arrays.asList(“汽车”、“公共汽车”、“火车”);
列表金额=数组.asList(58,16,33);
int val(){
对于(int i=0;i

谢谢

既然您已经将键/值对作为单独的列表,为什么不使用:

System.out.println(transp.get(n) + " = " + amount.get(n));
String randomVehicle = transp.get(n);
int randomAmount = amount.get(n);
如果必须通过地图进行操作,可以使用:

Iterator<Map.Entry<String, Integer>> iterator = vec.entrySet().iterator();
Map.Entry<String, Integer>> entry = iterator.next();
for (int i = 0; i < n; i++)
{
    entry = iterator.next();
}
String randomVehicle = entry.getKey();
Integer randomAmount = entry.getValue();
Iterator Iterator=vec.entrySet().Iterator();
Map.Entry>Entry=iterator.next();
对于(int i=0;i

这并不是一种很好的方法——地图是用来按键查找的,而不是按索引获取条目,因为它们本身就是无序的。

既然已经将键/值对作为单独的列表,为什么不使用:

String randomVehicle = transp.get(n);
int randomAmount = amount.get(n);
如果必须通过地图进行操作,可以使用:

Iterator<Map.Entry<String, Integer>> iterator = vec.entrySet().iterator();
Map.Entry<String, Integer>> entry = iterator.next();
for (int i = 0; i < n; i++)
{
    entry = iterator.next();
}
String randomVehicle = entry.getKey();
Integer randomAmount = entry.getValue();
Iterator Iterator=vec.entrySet().Iterator();
Map.Entry>Entry=iterator.next();
对于(int i=0;i

这并不是一种很好的方法——地图是按键查找的,而不是按索引获取条目,因为它们本来就是无序的。

你甚至在给它添加值之前就测量了
vec
的大小,因此,for
循环的
并不是运行它唯一的语句。甚至在向其添加值之前,您就在测量
vec
的大小,因此,for
循环的
并不是运行它唯一的语句。我不知道为什么输出为:null=16查看问题下方的注释我不知道为什么输出为:null=16查看问题下方的注释