2013-04-26 2 views
3

Я новичок в Java, поэтому у меня нет много знаний об этом. Я работал с Array, когда нашел на Java что-то действительно разочаровывающее.Использование строки в качестве индекса многомерного массива в JAVA

У меня есть строковый массив, и я хочу, чтобы индекс был строкой. Например,

String[][] a = new String[][]{}; 
a['person']['name'] = "something"; 

Но Java не позволяет мне это делать. Пожалуйста, помогите мне в этом или обходном пути. Благодаря

+0

Вы не можете это сделать с помощью '' array' или arrayList'. Посмотрите на класс «HashTable» (или «HashMap»). –

+0

Я думаю, вы можете использовать 'hashCode()', который возвращает целочисленное значение, но индексирование с использованием этого будет беспорядком. Так что лучше попробуйте «Карта» – Maximin

ответ

0

Вы могли бы просто использовать Map с определенным классом пользователя в качестве ключа:

Map<Category, String> map = new HashMap<>(); 

Category может иметь такие свойства, как enumtype, такие как PERSON и поле с String именем.

Обязательно переопределить hashCode и equals методы, позволяющие сравнивать разные объекты Category.

0

Я бы использовал HashMap, например, с именем в качестве ключа и «что-то» в качестве значения.

// Create a HashMap which stores Strings as the keys and values 
Map<String,String> example = new HashMap<String,String>(); 

// Adding some values to the HashMap 
example.put("Wayne", new String("Rooney")); 
example.put("Alan", new String("Shearer")); 
example.put("Rio", new String("Ferdinand")); 
example.put("John", new String("Terry")); 

// Find out how many key/value pairs the HashMap contains 
System.out.println("The HashMap contains " + example.size() + " pairs"); 

Итерация по карте:

for (String key : example.keySet()) { 
    // Get the String value that goes with the key 
    String value = example.get(key); 

    // Print the key and value 
    System.out.println(key + " = " + value); 
} 

Подробнее here.

-1

Вы можете попробовать карту карты:

Map<String, Map<String, V>> map = //... 
//... 

map.get("person").get("name"); 
+0

Эй, можно сделать что-то вроде этого. 'map.put (" name "," xxx "); map.put ("person", map1.put ("name", "xxx")); потому что иногда я могу поместить строку, а иногда и карту. –

+0

Нет, это невозможно (в первом утверждении), если карта определена как Карта Карты, тогда вы помещаете строку как ключ и как значение. – cakil

Смежные вопросы