2016-05-18 6 views
0

にオブジェクトを格納する私は、私は次のようにJAXBを使用してJavaオブジェクトに変換してるXML持っている:HashMapの

package IRCurves; 

import java.io.File; 
import java.util.HashMap; 
import java.util.List; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.JAXBException; 
import javax.xml.bind.Unmarshaller; 

public class XmlToObject { 
    public static void main(String[] args) { 
     try { 
      File file = new File("InterestRates_JPY_20160426.xml"); 
      JAXBContext jaxbContext = JAXBContext.newInstance(InterestRateCurve.class); 

      Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller(); 
      InterestRateCurve ir= (InterestRateCurve) jaxbUnmarshaller.unmarshal(file); 

      System.out.println(ir.getEffectiveasof()+" "+ir.getCurrency()+" "+ir.getBaddayconvention()); 
      System.out.println("Deposits:"); 
      List<Deposits> list=ir.getDeposits(); 
      for(Deposits ans:list) { 
       System.out.println(ans.getDaycountconvention()+" "+ans.getSnaptime()+" "+ans.getSpotdate()); 
       System.out.println("Calenders:"); 
       List<Calenders> list1=ans.getCalenders(); 
       for(Calenders c:list1) 
        System.out.println(c.getCalender()); 
       System.out.println("Curvepoint:"); 
       List<Curvepoint> list2=ans.getCurvepoint(); 
       for(Curvepoint curve:list2) 
        System.out.println(curve.getTenor()+" "+curve.getMaturitydate()+" "+curve.getParrate()); 
      } 
      System.out.println("Swaps:"); 
      List<Swaps> list3=ir.getSwaps(); 
      for(Swaps swap:list3) { 
       System.out.println(swap.getFixeddaycountconvention()+" "+swap.getFloatingdaycountconvention()+" "+swap.getFixedpaymentfrequency()+" "+swap.getFloatingpaymentfrequency()+" "+swap.getSnaptime()+" "+swap.getSpotdate()); 
      /*System.out.println("Calenders:"); 
      List<Calenders> list1=swap.getCalenders(); 
      for(Calenders c:list1) 
       System.out.println(c.getCalender());*/ 
       System.out.println("Curvepoint:"); 
       List<Curvepoint> list2=swap.getCurvepoint(); 
       for(Curvepoint curve:list2) 
        System.out.println(curve.getTenor()+" "+curve.getMaturitydate()+" "+curve.getParrate()); 
      } 
     } catch (JAXBException e) { 
      e.printStackTrace(); 
     } 
    } 
} 

私は、フォームHashMap<"Deposits_1M", 2016-06-29 -0.00029)のハッシュ地図にこれを格納したいです、 1Mは、curve.getTenor()2016-06-29を実行して得られる値の1つで、curve.getMaturitydate() & -.00029curve.getParrate()で取得します。基本的には、for(Curvepoint curve:list2)getTenor()の各反復の値を、文字列"Deposits"、およびcurve.getMaturitydate(から取得する値)と一緒にキーとして使用し、1つのハッシュマップエントリの値にすることが欲しいです。

どうすればよいですか?エントリを作成するには、次に

Map<String,String> resultsMap = new HashMap<>(); 

、あなたがMap.putを使用するので、あなたの中:

答えて

1

Javaコレクション(HashMapのを含む)マップは、あなたが宣言で、キーと値の型を含める必要があるので、パラメトリックあります場合は、これは次のようになると思います:

resultsMap.put(curve.getTenor(), curve.getMaturitydate()+" "+curve.getParrate()) 
0

複数の値に1つのキーマップを持つ構造を探していますか?

HashMap<String,List<Integer> results = new HashMap<String,List<Integer>(); 
// Does Key already exist? 
List<Integer> temp = results.get(curve.getTenor()); 

     if(temp != null){ 

       //if it does add to object 
       temp.add(curve.getMaturitydate()); 
       temp.add(curve.getParrate()); 


     }else{ 
      // if not make object and put in has map 
     List<Integer> nn = new ArrayList<Integer>(); 

     nn.add(curve.getMaturitydate()); 
     nn.add(curve.getParrate()); 
     userList.put(curve.getTenor(), nn); 

      } 

次に、すべての値はArrayListの位置0-1に格納されます。 文字列を分割したり、連結として格納したりしたくない場合。値が変更され、複数の回答が保存されている場合も同様です。 2つの配列インデックスはすべて1対の値です。