Được rồi vì vậy tôi đã dành vài giờ cố gắng để quấn đầu của tôi xung quanh khái niệm này của HashMap trong Java nhưng tôi không thể tìm ra. Tôi đã xem xét nhiều hướng dẫn nhưng dường như không có gì để giải quyết yêu cầu chính xác của tôi và tôi không thể làm cho nó hoạt động.Java HashMap mảng đa chiều kết hợp không thể tạo hoặc thêm các thành phần
Tôi đang cố gắng tạo một mảng đa chiều kết hợp trong Java (hoặc một cái gì đó tương tự) để tôi có thể lưu và lấy từ mảng bằng các khóa là Strings.
Đây là cách tôi sẽ làm điều đó trong PHP và giải thích nó tốt nhất những gì tôi đang cố gắng để làm:
//loop one - assign the names
myArray['en']['name'] = "english name";
myArray['fr']['name'] = "french name";
myArray['es']['name'] = "spanish name";
//loop two - assign the description
myArray['en']['desc'] = "english description";
myArray['fr']['desc'] = "french description";
myArray['es']['desc'] = "spanish description";
//loop three - assign the keywords
myArray['en']['keys'] = "english keywords";
myArray['fr']['keys'] = "french keywords";
myArray['es']['keys'] = "spanish keywords";
//later on in the code be able to retrive any value similar to this
english_name = myArray['en']['name'];
french_name = myArray['fr']['name'];
spanish_name = myArray['es']['name'];
Đây là những gì tôi đã cố gắng trong Java nhưng nó không làm việc:
HashMap<String, HashMap<String, String>> myArray = new HashMap<String, HashMap<String, String>>();
myArray.put("en" , put("name", "english name")); //gives me "cannot find symbol" at second put
myArray.put("en" , ("name", "english name")); //gives me "')' expected" after second comma
Vì vậy, tôi chắc chắn rằng một cái gì đó đơn giản của nó mà tôi đang thiếu nhưng xin vui lòng chỉ ra bởi vì điều này là rất bực bội!
Cảm ơn
EDIT:
Vì vậy, đây là một số mã làm việc về cách tôi thực hiện câu trả lời tôi chấp nhận:
import java.util.*;
HashMap<String, HashMap<String, String>> finalArray = new HashMap<String, HashMap<String, String>>();
String[] langArray = {"en","fr","de","no","es"};
//Initialize each language key ahead of time
for(String lang : langArray) { // foreach lang in langArray
if (!finalArray.containsKey(lang)) {
finalArray.put(lang, new HashMap<String, String>());
}
}
//loop one - assign names
for(String lang : langArray) {
String theName = lang + " name"; //go get the name from somewhere
finalArray.get(lang).put("name", theName);
}
//loop two - assign description
for(String lang : langArray) {
String theDesc = lang + " description"; //go get the description from somewhere
finalArray.get(lang).put("desc", theDesc);
}
//loop three - assign keywords
for(String lang : langArray) {
String theKeys = lang + " keywords"; //go get the keywords from somewhere
finalArray.get(lang).put("keys", theKeys);
}
//display output
for(String lang : langArray) {
System.out.println("LANGUAGE: " + lang);
System.out.println(finalArray.get(lang).get("name"));
System.out.println(finalArray.get(lang).get("desc"));
System.out.println(finalArray.get(lang).get("keys"));
}
//example to retrieve/get values
String english_name = finalArray.get("en").get("name");
String french_desc = finalArray.get("fr").get("desc");
Vâng sau khi đọc một số câu trả lời tôi thấy rằng nó không đơn giản như vậy! Cảm ơn bạn đã trả lời! – jsherk