Создать массив массива в Java - PullRequest
0 голосов
/ 06 июня 2011

Мне нужно создать массив массивов со строками в Java ...

Например, я читаю файл, который содержит для каждого столбца спорт и имя игрока .. как:

Цель в конце состоит в заполнении списка, сгруппированного в разделе (спорт)

hockey,Wayne Gretsky
hockey,Mario Lemieux
baseball,Barry Bonds
baseball,A Rod

Мне нужно создать [] [] с помощью этой функции:

public static String[][] getSportItems(int sectionCount){
    String currentSection="";
    int cnt=0;
    try{

        File file = new File(Environment.getExternalStorageDirectory()
                + "/sports.csv");
        BufferedReader br = new BufferedReader(new FileReader(file));
        String strLine = "";
        while ((strLine = br.readLine()) != null) {
            String[] data = strLine.split(";");
            if(cnt>0){  

            }
            cnt++;
        }
    }catch (IOException e) {
        e.printStackTrace();
    }

}

КакЯ могу справиться с этим, чтобы создать массив для каждого вида спорта, содержащий игроков, связанных со спортом.

Я новичок в Java ... Спасибо

Ответы [ 4 ]

1 голос
/ 07 июня 2011

Bonjour Maxime,

Вам лучше хранить свои данные в hasmap.Это позволяет связать одно значение с другим.Например, вы можете определить карту, которая связывает вид спорта со списком игроков, например:

Map<String, List<Player>> mapSportToPlayer = new Hashmap<String, List<Player>>();

или если у вас нет класса Player (но лучше иметь его):

Map<String, List<String>> mapSportToPlayer = new Hashmap<String, List<String>>();

и чтобы поставить игрока, сделайте так

public void addPlayerToSport( String sport, Player player )
{
   List<Player> listPlayer = mapSportToPlayer.get( sport );
   //first time we associate a player to this sport
   if( listPlayer == null )
   {
       listPlayer = new ArrayList<Player>();
   }//if
   listPlayer.add( player );
}//met

и получите всех людей, связанных со спортом:

List listPlayer = mapSportToPlayer.get (sport);

и распечатайте их на консоли

for( Player p : listPlayer )
   System.out.println( p );

, а затем переопределите toString в проигрывателе классов, чтобы обеспечить четкий текстовый вывод ваших объектов.

С уважением, Стефан

0 голосов
/ 07 июня 2011

или если использование массивов является ограничением в задаче / HW, вы можете создать массив объектов и сохранить в нем другой массив, так как класс Object находится поверх всех классов, а затем приведите объект в виде массива, когда захотите. тебе это

0 голосов
/ 07 июня 2011
String[][] playerSport = new String[7][2];

Если количество строк не фиксировано, используйте ArrayList.

List<String[]> listPlayerSport = new ArrayList<String[]>();
0 голосов
/ 07 июня 2011

Карта - лучший способ сохранить это. Но если вам нужен массив, вы можете создать двумерный массив или массив массивов, например

String[][] sportToPlayers = {{"hockey","Wayne Gretsky"},
{"hockey","Mario Lemieux"},{"baseball", "Barry Bonds"}};

Таким образом, каждый массив имеет два значения. В позиции 0 - спорт, а в позиции 1 - имя игрока

Или вы можете просто утверждать, что в позиции 0 это хоккей, а в позиции 1 - бейсбол, т.е.

String[][] playersOfSports = {{"Mario Lemieux","Wayne Gretsky"},
    },{"Barry Bonds", "A Rod"}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...