Я читаю таблицу из Excel и передаю данные в карту hasp.Тем не менее, похоже, что один из элементов, используемых в ключе, перезаписывается после вставки.Я не могу понять, что не так.Буду очень признателен, если кто-нибудь сможет мне помочь.
// Определение класса AssetCity
public class AssetCity{
public int asset;
private int city;
//constructors
//setters
// hashCode and Equals methods
В основной функции я сначала читаю таблицу Excel и создаю свою карту.
XSSFSheet _pi = myWorkbook.getSheet("pi"); //get the sheet
Map<AssetCity, Integer> pi = new HashMap<AssetCity, Integer>(); //create map
for(int i = _pi.getFirstRowNum() + 1 ; i <= _pi.getLastRowNum(); i++){
AssetCity pair = new AssetCity();
Row ro = _pi.getRow(i); //get each row
for(int j = ro.getFirstCellNum()+1; j <= ro.getLastCellNum()-1; j++) {
Cell ce = ro.getCell(j); //go through each column
pair.setAssetCity(i, j); //create the key that will be inserted
int val = (int) ce.getNumericCellValue(); // get the cell value
// System.out.println(pair.toString()+ " "+ val);
pi.put(pair, val); // insert into the map
}
}
Когда я использую System.out.println(pair.toString()+ " "+ val);
перед операцией вставки, то, что я получаю, показано ниже, что правильно и соответствует значениям, которые у меня есть в Excel.
asset_city [asset=1, city=1] 0
asset_city [asset=1, city=2] 0
asset_city [asset=1, city=3] 0
.....
asset_city [asset=5, city=3] 1
asset_city [asset=5, city=4] 0
Теперь, когда я закончу с циклом for, я перебираю все элементы на карте.
Iterator<Map.Entry<AssetCity,Integer>> itr1 = pi.entrySet().iterator();
while(itr1.hasNext())
{
Map.Entry<AssetCity,Integer> entry = itr1.next();
System.out.println(entry.getKey().toString() + " = " + entry.getValue());
Теперь, как видите, значения городов в ключе выглядят одинаково.
asset_city [asset=2, city=4] = 0
asset_city [asset=3, city=4] = 0
asset_city [asset=4, city=4] = 0
asset_city [asset=5, city=4] = 0
asset_city [asset=1, city=4] = 0
asset_city [asset=2, city=4] = 1
asset_city [asset=3, city=4] = 0
asset_city [asset=4, city=4] = 0
asset_city [asset=1, city=4] = 0
asset_city [asset=2, city=4] = 0
asset_city [asset=3, city=4] = 1
asset_city [asset=1, city=4] = 0
asset_city [asset=2, city=4] = 0
asset_city [asset=1, city=4] = 1
asset_city [asset=5, city=4] = 0
asset_city [asset=4, city=4] = 0
asset_city [asset=5, city=4] = 0
asset_city [asset=3, city=4] = 0
asset_city [asset=4, city=4] = 1
asset_city [asset=5, city=4] = 1