Java创建两个参数的对象

Java创建两个参数的对象,java,object,hashmap,Java,Object,Hashmap,我想知道是否有可能创建一个具有两个参数的类对象。事实上,我想要两个在hashmap中使用相同的键存储两个值(double,int),如下所示: {1 = (4.0, 5),.... } 所以,我做了类似的事情,但我不知道如何得到上面的结果: public class Dijkstra{ private final List<Integer> L; private final int V; private final int P; private final double C;

我想知道是否有可能创建一个具有两个参数的类对象。事实上,我想要两个在hashmap中使用相同的键存储两个值(double,int),如下所示:

{1 = (4.0, 5),.... }
所以,我做了类似的事情,但我不知道如何得到上面的结果:

public class Dijkstra{
private final List<Integer> L;
private final int V;
private final int P;
private final double C;

  public Dijkstra(){
      L = new ArrayList<>();
  }

//Create my object to put after in my hashmap
public Dijkstra(int P, double C){
this.P = P;
this.C = C;
}
.....
public Map mymethod() {
Map<Integer, Object> m = new HashMap<Integer, Object>();
}
}
Dijkstra公共类{
私人最终名单L;
私人终审法院;
私人最终INTP;
私人决赛双C;
公共Dijkstra(){
L=新的ArrayList();
}
//创建要在hashmap中放置的对象
公共迪杰克斯特拉(内线P,双C){
这个,P=P;
这个.C=C;
}
.....
公共映射方法(){
Map m=新的HashMap();
}
}
所以,我想用我的两个参数创建一个类的对象,将其放入hashmap中。 我如何在java中做到这一点


谢谢。

您应该创建一个新类,表示
int
double
参数所表示的内容:

public class MyRepresentaion{
    private int myInt;
    private double myDouble;

    public MyRepresentation(int myInt, double myDouble){
        this.myInt = myInt;
        this.myDouble = myDouble;
    }

    public int getMyInt(){
        return myInt;
    }
    public double getMyDouble(){
        return myDouble;
    }
    public void setMyInt(int value){
        myInt = value;
    }
    public void setMyDouble(double value){
        myDouble = value;
    }
}
然后,您应该将您的
MyRepresentation
对象放在地图中:

public Map mymethod() {
    Map<Integer, MyRepresentaion> m = new HashMap<Integer, MyRepresentaion>();
}
publicmap-mymethod(){
Map m=新的HashMap();
}

您需要为其创建一个类,该类正好包含这两个值:

import java.util.*;

class MyValuePair {
    private int intValue;
    private double doubleValue;

    MyValuePair(double doubleValue, int intValue) {
        this.intValue = intValue;
        this.doubleValue = doubleValue;
    }

    //Getter and Setter as well as constructor(s) as needed
    public String toString() {
        return "(" + doubleValue + ", " + intValue + ")";
    }

}

public class Dijkstra {

    static Map<Integer, MyValuePair> map = new HashMap<>();

    public static void main(String[] args) {
        MyValuePair pair = new MyValuePair(4.0, 5);
        map.put(1, pair);
        System.out.println(map);
    }

}
import java.util.*;
类MyValuePair{
私有int值;
私人双重价值;
MyValuePair(双精度双精度值,int-int-value){
this.intValue=intValue;
this.doubleValue=doubleValue;
}
//所需的Getter和Setter以及构造函数
公共字符串toString(){
返回“(“+doubleValue+”,“+intValue+”)”;
}
}
公共级迪杰斯特拉酒店{
静态映射映射=新的HashMap();
公共静态void main(字符串[]args){
MyValuePair=新的MyValuePair(4.0,5);
地图放置(1对);
系统输出打印项次(map);
}
}
因此,您的值对位于MyValuePair中,该类的对象将位于映射中。如果需要(=在带有public关键字的新文件中),您可以为其创建一个新的公共类,或者将其作为内部类保留在其中

任何其他与清单和任何你需要的将在迪克斯特拉类

评论之后:

正如我所说的,这是可能的!但你不想这么做。但是,如果Dijkstra类也保存值,那么这段代码也会执行相同的操作:

public class Dijkstra {

    static Map<Integer, Dijkstra> map = new HashMap<>();

    private double doubleValue;
    private int intValue;

    public Dijkstra(int intValue, double doubleValue) {
        this.intValue = intValue;
        this.doubleValue = doubleValue;
    }

    public String toString() {
        return "(" + doubleValue + ", " + intValue + ")";
    }

    public static void main(String[] args) {
        Dijkstra pair = new Dijkstra(4.0, 5);
        map.put(1, pair);
        System.out.println(map);
    }

}
Dijkstra公共类{
静态映射映射=新的HashMap();
私人双重价值;
私有int值;
公共Dijkstra(int-int值,双倍值){
this.intValue=intValue;
this.doubleValue=doubleValue;
}
公共字符串toString(){
返回“(“+doubleValue+”,“+intValue+”)”;
}
公共静态void main(字符串[]args){
Dijkstra对=新Dijkstra(4.0,5);
地图放置(1对);
系统输出打印项次(map);
}
}

Map
..但是Djkstra还有其他的参数。您试图实现什么?您定义了一个包含两个元素的类,即getter和setter。然后创建一个从Integer到该类的映射。是否可以用具有更多元素的同一个类来定义它?Dijkstra不是声明为类,而是声明为两个方法。但是Dijkstra的元素比我的两个元素(P,C)多。非常感谢。我的问题是,为什么不在同一个类中创建具有两个参数的对象,即使它有两个以上的参数。为什么在java中不可能?它是可能的。因此,问题是您将浪费大量内存,并且您拥有一个服务于多个目的的类。您通常希望一个类是为一件事设计的。在您的例子中,Dijkstra应该保存当前路径的收集值(我假设),并提供计算路径的方法。它不应该有第二个为自己持有价值观的目的。我补充了一种方法,我认为你在想什么,但再一次。。。。我建议不要这样做。非常感谢你的解释。我更喜欢第一个解决方案,因为它将是同一个文件,不会浪费内存。事实上,这个对象只适用于Dijkstra类。