Maks00088
@Maks00088
Обучаюсь Java/JavaEE /Php/Js

Почему не получается создать Hash Map c нужной информацией?

Как правильно добавить данные в Hash Map ?
Почему добавляется только один и тот же ключ ?

@Before
    public void createCoupons() {
        System.out.println("Setting coupons data! ");

        Coupon coupon1 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company1"), callForCoupon(), "Travelling low prices", "FamilyTravelling",
                23, 765475475, "C://ProgramFiles", 35.8, CouponType.TRAVELING, CouponSystemDate.dateFormat(2017, 12, 12)
                , CouponSystemDate.dateFormat(2019, 12, 12));

        Coupon coupon2 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company2"), callForCoupon(), "Camping low prices", "FamilyCamping",
                13, 9999887, "C://ProgramFiles", 55.8, CouponType.CAMPING, CouponSystemDate.dateFormat(2016, 10, 10)
                , CouponSystemDate.dateFormat(2018, 9, 1));

        Coupon coupon3 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company1"), callForCoupon(), "Electricity low prices", "Electricity",
                12, 5424352, "C://ProgramFiles", 25.8, CouponType.ELECTRICITY, CouponSystemDate.dateFormat(2017, 7, 3)
                , CouponSystemDate.dateFormat(2018, 4, 5));

        Coupon coupon4 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company2"), callForCoupon(), "Food low prices", "FamilyDinner",
                53, 989873, "C://ProgramFiles", 15.8, CouponType.FOOD, CouponSystemDate.dateFormat(2017, 4, 11)
                , CouponSystemDate.dateFormat(2018, 4, 11));

        Coupon coupon5 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company1"), callForCoupon(), "Health insurance low prices", "FamilyInsurance",
                83, 33344455, "C://ProgramFiles", 88.8, CouponType.HEALTH, CouponSystemDate.dateFormat(2017, 8, 9)
                , CouponSystemDate.dateFormat(2018, 8, 9));


        Coupon coupon6 = companyServiceTesting.createCompanyCoupon(setOfCompanies.get("company2"), callForCoupon(), "Sport village low prices", "SportVacation",
                73, 6665432, "C://ProgramFiles", 95.8, CouponType.SPORTS, CouponSystemDate.dateFormat(2017, 7, 11)
                , CouponSystemDate.dateFormat(2019, 7, 11));

        setInCouponCollection("coupon1", coupon1);
        setInCouponCollection("coupon2", coupon2);
        setInCouponCollection("coupon3", coupon3);
        setInCouponCollection("coupon4", coupon4);
        setInCouponCollection("coupon5", coupon5);
        setInCouponCollection("coupon6", coupon6);

    }


public Map<String, Coupon> setInCouponCollection(String key, Coupon coupon) {
        if (setOfCoupons == null) {
            setOfCoupons = new HashMap<>();
        }
        setOfCoupons.put(key, coupon);
        System.out.println("Added object key: " + setOfCoupons.entrySet().iterator().next().getKey() + " added object value: " + setOfCoupons.get(key));
        return setOfCoupons;
    }


Отладка:
Setting coupons data! 
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
Added object key: coupon1 added object value: Coupon [id=6665432, title=SportVacation, startDate=2017-07-11, endDate=2019-07-11, amount=73, message=Sport village low prices, price=95.8, image=C://ProgramFiles, type=SPORTS]
  • Вопрос задан
  • 171 просмотр
Решения вопроса 2
zagayevskiy
@zagayevskiy Куратор тега Java
Android developer at Yandex
Потому что неправильно пишешь в консоль.
setOfCoupons.entrySet().iterator().next().getKey()
entrySet - это множество ключей, и ты берешь от него итератор - перечислитель, берешь всегда первый элемент и берешь его ключ. Нужно пройти по множеству полностью, например так:
for (Map.Entry<String, Coupon> entry: setOfCoupons.entrySet()){
    print(entry.getKey() + " ->" + entry.getValue());
}

Кстати, ходить по хешмапе итератором - это так себе занятие, потому что порядок не гарантирован. Если хочется это делать, лучше использовать LinkedHashMap.
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
вам той темы мало было.
1) setOfCoupons.entrySet().iterator().next().getKey() не вернет то что вы думаете в данной ситуации, будет всегда возвращать только первый элемент.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
19 мая 2024, в 23:15
6000 руб./за проект
19 мая 2024, в 22:55
150000 руб./за проект
19 мая 2024, в 22:52
3000 руб./за проект