В этом есть примерный бит кода, и я не уверен, сколько деталей нужно выполнить, но я заполняю treemap с данными из таблицы mysql, и у меня есть итерация через него.Итерация через массив, заполненный из таблицы MySQL
Вот код класса, содержащий TreeMap
public class SeasonResults{
private static Map<String,SeasonResults> allResults = new TreeMap<String,SeasonResults>();
private String hometeam;
private String awayteam;
private String result;
private static SeasonResults result6;
public static SeasonResults add(String hometeam, String awayteam, String result)
{
result6 = new SeasonResults(hometeam, awayteam, result);
allResults.put(hometeam,result6);
return result6;
}
private SeasonResults(String hometeam, String awayteam, String result)
{
this.hometeam = hometeam;
this.awayteam = awayteam;
this.result = result;
}
public static Collection<SeasonResults> getCollection()
{
return allResults.values();
}
@Override
public String toString()
{
return " "+hometeam+", "+awayteam+", "+result;
}
}
и вот-код, где я заполнить массив, а затем попытаться итерацию через него.
public void HeadToHead(){
try
{
//Sets up the connedtion to the database and installs drivers which are required.
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost", "username", "password");
String SQL = "SELECT * FROM PreviousSeasons WHERE HomeTeam=? and AwayTeam=?";
PreparedStatement prepst;
prepst = con.prepareStatement(SQL);
prepst.setString(1,box1.getSelectedItem().toString());
prepst.setString(2,box2.getSelectedItem().toString());
rs = prepst.executeQuery();
while (rs.next())
{
//This retrieves each row of League table and adds it to an array in the League Results class.
hometeam = rs.getString("HomeTeam");
awayteam = rs.getString("AwayTeam");
result = rs.getString("Result");
custs = (hometeam + "," + awayteam + "," + result); // Takes all the variables containging a single customers information and puts it into a string, seperated by commas.
SeasonResults.add(hometeam, awayteam, result);
}
}
catch (Exception e)
{
System.out.println("Error " +e);
}
Seasonrecord = SeasonResults.getCollection();
seasons = new SeasonResults[Seasonrecord.size()];
Iterator iterateSeason = Seasonrecord.iterator();
int i = 0;
while(iterateSeason.hasNext()){
seasons[i] = (SeasonResults)iterateSeason.next();
i++;
if(result.equals("HW")){
hometeamvalue = hometeamvalue + 50;
}
else if(result.equals("D")){
hometeamvalue = hometeamvalue + 10;
awayteamvalue = awayteamvalue + 10;
}
else{
if(result.equals("AW")){
awayteamvalue = awayteamvalue + 50;
}
}
}
}
В базе данных добавлено 5 результатов 'результата'. 2 - «HW», 2 - «AW», а 1 - «D». То, что я пытаюсь сделать, это распечатать «hometeamvalue» и «awayteamvalue», но когда я сделаю это значение, будет напечатано только 10. Будет использовано только значение первого поля.
Я использую тот же код для повторения массива, когда хочу отображать результаты в графическом интерфейсе, и отображаются все поля. Но когда я пытаюсь выполнить некоторые вычисления с ними, это не сработает.
Любые идеи, в чем проблема?
если (result.equals ("HW")) в этом выражении заменяются как результат с помощью сезонов [i] .getResult(). equals («HW»), а в остальных двух случаях, если утверждения тоже делают то же самое ... и попробуйте – Naren
Пробовал, но он не работает. Я не думаю, что эта часть является проблемой, потому что она отлично работает для первого элемента массива, но не идет дальше и получает другие. – user3139748
Это сработает, но вам нужно будет изменить ur Serachesults Code также .. Может ли пост PostResults.java полностью и почему u r принимает приватную статическую карту allResults в том же классе ... –
Naren