c++-关于java中Map添加数据的问题

问题描述

关于java中Map添加数据的问题

我定义了Map revmap=new HashMap();
但是当我向revmap中添加数据时总提示错误。

revmap.put(num_vertices, p);
其中num_vertices是int型,p是Point2d型,错误提示让把num_vertices改为integer型是怎么回事?

补充内容:
其实我是看到了一个C++程序,需要把它该写为java程序,C++代码所用的数据结构如下:

 std::map<int, int> Map;
    std::map<int, Point2d> revmap;
    std::vector<std::vector<Point2d> > components;

还有

 typedef std::vector< std::set<int> > graph_t;

其中Point2d是这样一个结构:

 struct Point2d {
    int x;
    int y;
    float SWT;
};

这几个我不知道用java怎么实现,就是我尝试用

Map<integer, integer> map=new HashMap<integer, integer>();

实现

  std::map<int, int> Map;

时,在map中put两个int时就会报错。
谁知道C++的这种类型对应Java中应该怎么实现?

解决方案

JSP为:

 <%@ page contentType="text/html" language="java" errorPage="" pageEncoding="GBK"%>
<%@ page import="tsinggao.Point2d"%>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.Set" %>
<%@ page import="java.util.Iterator" %>
<html>
    <head>
        <title>JSP中添加Map并显示
        </title>
    </head>
    <body>
        <%
            Map<Integer,Point2d> myMap = new HashMap<Integer,Point2d>();
            Point2d myPoint2d1 = new Point2d();
            Point2d myPoint2d2 = new Point2d();
            Point2d myPoint2d3 = new Point2d();
            myPoint2d1.setX(100);
            myPoint2d1.setY(100);
            myPoint2d1.setSWT(1000/10);
            myMap.put(1, myPoint2d1);
            myPoint2d2.setX(200);
            myPoint2d2.setY(200);
            myPoint2d2.setSWT(2000/10);
            myMap.put(2, myPoint2d2);
            myPoint2d3.setX(300);
            myPoint2d3.setY(300);
            myPoint2d3.setSWT(3000/10);
            myMap.put(3, myPoint2d3);
            Set<Integer> mykeySet = myMap.keySet();
            int i=1;
            for (Iterator<Integer> iterator = mykeySet.iterator(); iterator.hasNext();) {
            Integer myInteger = iterator.next();
            Point2d resultPoint2d = myMap.get(myInteger);

        %>
            Map中,第<%=String.valueOf(i) %>个元素的Key为:<%=String.valueOf(myInteger) %><br>
            &nbsp;&nbsp;&nbsp;&nbsp;第<%=String.valueOf(i) %>个元素的Value为:
            x=<%=String.valueOf(resultPoint2d.getX()) %>;
            y=<%=String.valueOf(resultPoint2d.getY()) %>;
            float=<%=String.valueOf(resultPoint2d.getSWT()) %><br><br>
        <%
            i++;
        }
        %>

        <%%>
    </body>
</html>

Point2d 类文件为:tsinggao.Point2d.java

 package tsinggao;

public class Point2d {
    int x;
    int y;
    float SWT;
    public int getX() {
        return x;
    }
    public void setX(int x) {
        this.x = x;
    }
    public int getY() {
        return y;
    }
    public void setY(int y) {
        this.y = y;
    }
    public float getSWT() {
        return SWT;
    }
    public void setSWT(float swt) {
        SWT = swt;
    }

};

解决方案二:

Map是堆空间~堆空间要求存储的都是对象类型的数据,而不是基础类型的数据

解决方案三:

贴上代码吧。。

Point2D
protected Point2D()这是一个无法直接实例化的抽象类。特定于类型的实现子类可用于实例化,并提供用于存储满足以下各种存取方法所需信息的多种格式。

这个类没用过,我不会试图举出一个实例出来。。贴上你的代码我试着看看

解决方案四:

 Map<integer,Point2d> revmap=new HashMap<integer, Point2d>(); 这个代码不报错?没有integer。既然要别人帮忙解决问题,起码把代码贴上来
 map中可以put int型
 类似
 Map<Integer,String> hashMap = new HashMap();
        int a = 1;
        hashMap.put(a,"2");
        这是没问题的。

解决方案五:

Map中的键和值都必须要求是对象,而在java中int等基本类型不是对象,要用它所对应的包装类Integer, Integer是对象。

时间: 2024-11-01 06:17:18

c++-关于java中Map添加数据的问题的相关文章

Java 中Map 的用法详解_java

Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如HashMap 类. 注:将可变对象用作映射键时必须格外小心.当对

JS自定义对象实现Java中Map对象功能的方法

这篇文章主要介绍了JS自定义对象实现Java中Map对象功能的方法,可实现类似Java中Map对象增删改查等功能,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容! 这里Key

JS自定义对象实现Java中Map对象功能的方法_javascript技巧

本文实例讲述了JS自定义对象实现Java中Map对象功能的方法.分享给大家供大家参考.具体分析如下: Java中有集合,Map等对象存储工具类,这些对象使用简易,但是在JavaScript中,你只能使用Array对象. 这里我创建一个自定义对象,这个对象内包含一个数组来存储数据,数据对象是一个Key,可以实际存储的内容!   这里Key,你要使用String类型,和Java一样,你可以进行一些增加,删除,修改,获得的操作. 使用很简单,我先把工具类给大家看下: 复制代码 代码如下: /**  *

Java中Map的排序问题详解_java

Map的种类 在Java中,Map的主要作用是存储键值对.由于是根据键得到值,所以不允许键重复.它主要有如下几个类别: HashMap: 最常用的Map,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的.HashMap最多只允许一条记录的键为Null;允许多条记录的值为Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致.如果需要同步,可以用Collections的sy

关于java中Map的九大问题分析_java

通常来说,Map是一个由键值对组成的数据结构,且在集合中每个键是唯一的.下面就以K和V来代表键和值,来说明一下java中关于Map的九大问题.0.将Map转换为List类型在java中Map接口提供了三种集合获取方式:Key set,,value set, and key-value set..它们都可以通过构造方法或者addAll()方法来转换为List类型.下面代码就说明了如何从Map中构造ArrayList: // key list List keyList = new ArrayList

ITOO---MVC3.0动态添加表格的行数并Controller中获取添加数据

MVC3.0动态添加表格的行数并Controller中获取添加数据            最近由于项目的中的相关需求,需要在MVC的视图中动态的添加添加数据的行数,并将前台输入的多行数据在Controller中获得传回服务端.本文将介绍如何从MVC的View端动态添加数据行数并将输入的数据在Controller中获得.            问题分析          一.设计前台显示页面(View).            视图中样式 @*添加上课班信息窗口*@ <div id="Add

java中map为什么不能直接使用iterator遍历?

问题描述 java中map为什么不能直接使用iterator遍历? 求教大神:直接使用map的时候方法中不会显示iterator方法,而是要写Set set = map.keySet();才可以使用iterator方法,为什么map和set同为集合,map就不可以直接使用iterator方法?内部逻辑是什么? 解决方案 只有实现的collection集合才有iterator方法,比如List和se接口:而Map接口不能使用iterator方法,需要现获取set视图,即Set set = map.

java json 数据转换-JAVA中如何将数据组装为json树状结构的数据

问题描述 JAVA中如何将数据组装为json树状结构的数据 我从数据库中查出的数据保存到一个集合List中,集合中是存的区域类Area.区域类的字段和数据库中结果的字段一样.图1中是我的数据库查询结果,想转行为json格式的树状结构.例如省-市-县这样的结构.就是图2的效果 图1: 图2: 弄了一天了还没出现,我太菜了.请大家帮帮忙 解决方案 要么你就自己纯拼字符串,要么就直接用fastjson这类json工具类直接转.只要类结构和json结构能对应,可以直接转就可以了. 解决方案二: 你定义一

如何在gridview中批量添加数据

问题描述 如何在gridview中批量添加数据 我想在dev gridview 中批量添加数据,如何在gridview中批量添加数据,并保存数据库中 解决方案 向数据库批量添加数据JDBC--批量添加数据C#批量添加数据 解决方案二: 希望我的回复对你有用. 假定有一个Product表,字段有(Id,Name,Quantity,...)我们要一次批量更新Quantity的值 首先在Gridview中,Quantity列以TemplateField显示,其他的列属性设为只读,把显示格式设为Text