我需要在java中使用Strings创建一个数组数组...
例如,我读了一个文件,其中包含每个列的运动和球员名称..
最终的目标是填充分组(体育)
中的列表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新手...谢谢
答案 0 :(得分:1)
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
让所有人都参加一项运动:
列表listPlayer = mapSportToPlayer.get(sport);
并在控制台上打印出来
for( Player p : listPlayer )
System.out.println( p );
然后在类播放器中覆盖toString以提供对象的明文输出。
此致,Stéphane
答案 1 :(得分:0)
地图是一种更好的存储方式。但是如果你想要一个数组,你可以创建一个二维数组或一个数组数组,例如
String[][] sportToPlayers = {{"hockey","Wayne Gretsky"},
{"hockey","Mario Lemieux"},{"baseball", "Barry Bonds"}};
因此每个Array都有两个值。在位置0是运动,位置1是运动员名称
或者你可以断言,在位置0,它是曲棍球,位置1是棒球,即
String[][] playersOfSports = {{"Mario Lemieux","Wayne Gretsky"},
},{"Barry Bonds", "A Rod"}}
答案 2 :(得分:0)
String[][] playerSport = new String[7][2];
如果行数未修复,请使用ArrayList
。
List<String[]> listPlayerSport = new ArrayList<String[]>();
答案 3 :(得分:0)
或者如果使用数组是问题/ HW中的约束,则可以创建一个Object数组并在其中存储另一个数组,因为Object类位于所有类的ontop上,然后随时将对象转换为数组你好吗