La fonction de mise fonctionne bien, mais la fonction GET ne le fait pas. Apparemment, je ne connais pas l'astuce. J'ai cherché et lire de nombreux postes mais je n'ai pas trouvé de solution à ce problème.
Ce serait bien si quelqu'un peut me laisser savoir le tour. P> p>
4 Réponses :
Je ne pense pas que vous puissiez utiliser des vecteurs numériques ou des matrices comme des clés dans un hashmap Java. Vous devez plutôt convertir le vecteur ou la matrice en une seule clé unique, telle qu'une représentation unique de chaîne de caractères des valeurs dans le vecteur ou la matrice. Il y a quelques façons de faire ceci:
pour les tableaux entier, vous pouvez utiliser le Char fonctionner pour convertir les entiers en représentations équivalentes ASCII, créant ainsi une chaîne de caractères. Cela ne fonctionnera efficacement que pour les valeurs entières entre 0 et 65535, étant donné que tout en dehors de cette plage aura probablement un comportement non défini. Voici un exemple: P>
keyValue = reshape(dec2bin(X(:),64)',1,[]);
Merci. Cela fonctionne pour les intrants entier. Y a-t-il de toute façon pour générer des objets Java à partir de malab matrices? (E.g 1: .1: 3) La fonction Char fonctionne également sur eux, mais je pense que cela ignore simplement les parties non entière.
Merci encore. Cela fonctionne assez bien, bien que ce soit très lent. La raison pour laquelle j'ai fini par faire est que j'essaie de mettre en œuvre un * algorithme efficace à Matlab. Par conséquent, j'utilise des objets Java pour un accès rapide, mais il semble que je suis mieux désactivé, écrivez un code C ++ et mez-vous. La prise est, j'aimerais avoir un * aussi flexible que possible. Par exemple, recevez toutes les spécifications de domaine de recherche comme fonctions d'entrée.
Si vous utilisez une version plus récente de Matlab (2008b ou plus tard, je pense) alors Matlab a sa propre classe de cartes qui fonctionne pour certains types de clés. Voir la documentation: CONTENANTS.MAP P>
Malheureusement, les conteneurs dans Matlab ne supportent pas les matrices.
Je pense que le problème est que les réseaux primitifs Java ne fournissent pas les mêmes égaux () et HASHCODE () pour vous. Ils utilisent les méthodes d'objet standard comparant par l'identité d'objet au lieu de valeurs contenues. Lorsque vous utilisez des matrices Nonscalar sous forme de clés dans un hashmap, Matlab les convertira en double [], mais ils seront distincts Java Objecs, de sorte qu'ils obtiendront ce comportement.
Si vous avez enveloppé vos valeurs de matrice dans un objet Java qui Comportement à valeur fournie pour les égaux () et HashCode () avant de les utiliser comme des clés, cela pourrait fonctionner. Heureusement, Java.Util.Arrays fournit des implémentations par valeur pour les matrices primitives. Nous devons juste les gifler dans une classe wrapper qui fournit l'interface que HASHMAP s'attend à s'attendre. P>
>> scratch_array_keyed_hashmap gotBack = my value
Les structures MATLAB fournissent une recherche très rapide des touches alphanumériques (puits, [A-ZA-Z] [A-ZA-Z_0-9] * Correspondance); À défaut, si vous essayez de hacher de chiffres, je suggérerais d'utiliser des tableaux rares avec le doublage de la matrice; Laissez l'arrayvalue pointer vers l'index dans tout ce que vous essayez de rechercher. htth p>