私はあなたがkey
がString
であることを見ることができるようにキーセットとキー異なるデータ型
以下のようにLinkedHashSet
の私のkeyset
とkey
は、異なるデータ型を含むされているユニークな状況を見ていますkeyset
はlong
です。
次のコードは、そのため失敗している:
modifiedRowKeys.toArray(new Long[modifiedRowKeys.size()]);
は私がArrayStoreException
String
の値を取得します。
私はMap<Long, Map<String,Object>>
を私のSpringサーバーに送信しているAngularアプリケーションからこれを複製することができました。このサーバーには、共有されているデータが入っています。
編集1:
日食で、次の奇妙な行動を参照してください。
それは我々がの変換のために使用されているジャクソンマッパーとの問題である可能性がありオブジェクト?
編集2:
次のコードは、
文字列は、これはかなりまっすぐ進むロジックを思わ
Set<Long> modifiedRowKeys = modifiedRowMap.keySet();
Long[] periodDateArray = new Long[modifiedRowKeys.size()];
int count = 0;
Iterator<Long> keyIterator = modifiedRowKeys.iterator();
while(keyIterator.hasNext()){
Long key = keyIterator.next();
System.out.println("key instanceof Long : " + (key instanceof Long));
periodDateArray[count++] = Long.valueOf(key);
}
ロング
にキャストすることはできないと言ってClassCastException
で失敗しました!
編集3:
次のように私は、問題を再現しています
public static void main(String[] args) {
CollectionsToArray collectionsToArray = new CollectionsToArray();
Map<String, Map<String, Object>> mapOfNumbers = collectionsToArray.prepareStrangeNumbersSetFromMapOfMap();
Object obj = mapOfNumbers;
collectionsToArray.convertMapToKeySetToArray(obj);
}
private Map<String, Map<String, Object>> prepareStrangeNumbersSetFromMapOfMap() {
Map<String, Map<String, Object>> longNumberMap = new LinkedHashMap<>();
Map<String, Object> stringValueMap = new HashMap<>();
stringValueMap.put("Adams", "Adithya");
stringValueMap.put("Edge", 80);
longNumberMap.put("1488376800000", stringValueMap);
return longNumberMap;
}
private void convertMapToKeySetToArray(Object obj) {
Map<Long, Map<String, Object>> mapOfNumbers = (Map<Long, Map<String, Object>>) obj;
Set<Long> stringNumbers = mapOfNumbers.keySet();
convertLongKeySetToArray(stringNumbers);
}
private void convertLongKeySetToArray(Set<Long> stringNumbers) {
Long[] stringNumbersArray = stringNumbers.toArray(new Long[0]);
Arrays.sort(stringNumbersArray);
System.out.println(stringNumbersArray);
}
長いことをキーとしてキー、値リストをWebページに送信した後、文字列をキーとしてリストを返します。 – freedev
[mcve]を提供できますか?あなたの説明は不明で、あなたのコードをすべて表示していません...コードを画像ではなくテキストとして貼り付けてください。 – assylias
そして、 '(key instanceof Long)'の周囲にbrakcetsを置く必要があります。そうでなければコンパイルされません。 – assylias