Использование двух структур в Array или ArrayList в Java - PullRequest
1 голос
/ 25 января 2011

В C # был шанс использовать:

Arraylist<String,int> data = Arraylist();

насколько я помню.

Есть ли какая-либо версия этого на Java?

Например, информация о массиве будет:

Apple 5
Tomato 3
Potato 9
... etc.

Вот почему я пытаюсь определить такую ​​структуру.

РЕДАКТИРОВАНИЕ:

Как насчет создания класса, такого как;

public class x
{
int a;
String  b;
}

и создание массива из этого класса.

ArrayList<x> data = new ArrayList<x>();

Будет ли это работать?

Ответы [ 4 ]

5 голосов
/ 25 января 2011

Если вы ищете способ создать пару {ключ, значение}, вам следует использовать карту.Пример ниже и ознакомьтесь с документами java.

Map<String,Integer> someMap = new HashMap<String,Integer>();

Подробнее на карте здесь .

Если вы ищете заполнитель для хранения фрагмента данныхтогда вам нужно что-то вроде этого.

public final class Fruit{

private String fruitName;
private Integer fruitCount;

//constructor initialized values.
//getters and setters for those
}

Тогда в вашем основном классе вы определите этот путь.

List<Fruit> fruits = new ArrayList<Fruit>();

Чтобы прочитать больше в списке, прочитайте ссылка .

2 голосов
/ 25 января 2011

Еще один вариант (я не говорю, что он лучше) будет использовать:

List<Pair<String, Integer>> list = new ArrayList<Pair<String, Integer>>

Где у вас есть класс Pair:

class Pair<E, F> {
    public E one;
    public F two;
}
2 голосов
/ 25 января 2011

Мне кажется, что вам нужно Map вместо List:

Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Apple", 5);
map.put("Tomato", 3);
map.put("Potato", 9);
0 голосов
/ 25 января 2011

Что лучше всего сделать здесь, в значительной степени зависит от того, как соотносятся String и число.Вот ряд возможностей и то, что вы, возможно, захотите с ними сделать.

Число - это идентификатор или некоторое подобное тесно связанное свойство:

Создайте класс дляпредставлять эти объекты и связывать их свойства.

public class Item {
  private final int id;
  private final String name;

  // constructor, getters, equals, hashCode, toString
}

Число - это число именованных элементов:

Использование Гуава Multiset для подсчета количества предметов.

Multiset<String> items = HashMultiset.create();
items.add("Apple", 5);
items.add("Tomato", 3);
// etc.

Число - это что-то еще, связанное с String, но недостаточно близко для хранения в одном объекте:

Используйте обычный Map, как предлагается в других ответах.

A Pair - не лучшее решение

Пока вы принялиответ, предлагающий использование класса Pair, я настоятельно рекомендую против этого, так как Pair ничего не делает, чтобы указать, какие два значения он содержит или , каковы отношения между ними и нет 'обеспечить удобства Map, чтобы получить значение, которое связано слибо с конкретным ключом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...