2010-02-01 4 views
1

J'ai un objet java.util.HashMap que je veux convertir généralement en un type de données MatLab, peut-être le nouveau type conteneurs.Map.MatLab peut-il comprendre le type de données Java int?

Idéalement je pouvais faire:

it = javaHashMapObj.keySet.iterator; 
while it.hasNext 
    jkey = it.next; 
    someMatlabObj(jkey) = javaHashMapObj.get(jkey); 
end 

Parmi d'autres problèmes potentiels (! S'il vous plaît remarquer, résoudre si elles sautent à vous), il y a la question que si le Java HashMap est calée avec des nombres entiers, it.next retournera néanmoins les objets doubles MatLab, qui ne fonctionneront alors pas comme des clés dans le HashMap avec javaHashMapObj.get.

Quelqu'un peut-il suggérer un moyen de résoudre ce problème? Étendre l'objet Java pour me donner le MatLab int32 pour les clés?

Répondre

2

Matlab convertit un nombre régulièrement entré (qui est un double) à un int Java primitif, mais si vous voulez un objet entier, vous devez boîte explicitement vous-même:

javaHashMapobj.get(java.lang.Integer(key)); 

Voir http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f6425.html pour une Table de conversion des types de données de MATLAB en Java.

+0

Merci Mike, c'est en quelque sorte l'inverse de ce que je voulais vraiment savoir, mais toujours utile. Mon problème est que quand it.next devrait retourner une clé en Java est un Int, MatLab obtient la clé comme un double. Ensuite, lorsque j'essaie d'utiliser it.next pour obtenir les valeurs de l'objet Java, elles ne fonctionnent pas car le hash Java n'a que des clés Int. Bien sûr, je pourrais le lancer.txt à un int MatLab en utilisant int32 (it.next) et alors cette valeur fonctionnerait comme une clé dans le hachage Java. Mais j'essaie d'avoir un moyen de gérer cela sans connaissance a priori des touches. – Chinasaur