soulbog Ответов: 2

Java hashmap вопрос


У меня есть код
import java.util.*;

class factory{
    int a;
    int b;
    public factory(int a,int b){
        this.a = a;
        this.b = b;

    }

    public int getA() {
        return a;
    }

    public int getB() {
        return b;
    }
    
}
public class JavaApplication2 {

    public static void main(String[] args) {

        Map<Integer,factory> base = new HashMap<>();
        Scanner in;
        in = new Scanner(System.in);
        int entityCount = in.nextInt();
            for (int i = 0; i < entityCount; i++) {
                int entityId = in.nextInt();
                int arg1 = in.nextInt();

                base.put(entityId, new factory(entityId,arg1));
            }
            base.values().forEach((factory _item) -> {
                HERE if
        });
    }
    
}

я добавляю значение для exemple
2
1 2
3 4
как проверить значение из значения entityId 0 a(которое равно 1) со значением entityid 1 b(которое равно 4).

на этом фото вы найдете более конкретное то, что я хочу сравнить
http://oi66.tinypic.com/j7enar.jpg

Что я уже пробовал:

я должен попробовать
base.values().iterator()
но я получаю
java.util.HashMap$ValueIterator@e9e54c2
java.util.HashMap$ValueIterator@65ab7765

Richard MacCutchan

Вам нужно извлечь каждый заводской объект и сравнить их друг с другом. То forEach конструкция может быть не лучшим выбором операции.

soulbog

да, но как? этого я не знаю

Richard MacCutchan

Вероятно, лучше использовать итератор, как описано в разделе HashMap в Java с примером[^].

soulbog

если использовать это, мне нужно сделать запись и итератор. я опубликовал более короткое решение в answear..

2 Ответов

Рейтинг:
19

soulbog

теперь я нашел 2 решения..

base.values().forEach((factory _item) -> {
                System.out.println(_item.getA()+ " " _item.getB());
               
        });

а второй-это
for (factory t1:base.values()){
              System.out.println(t1.getA() + ", " + t1.getB());
          }

если сомоане знает что-то получше, пожалуйста, дайте мне знать


Richard MacCutchan

Не публикуйте дополнительную информацию в качестве решения, отредактируйте свой вопрос. Это просто означает, что люди думают, что вы получили ответ, и нет необходимости смотреть на ваш вопрос.

Кроме того, я до сих пор точно не знаю, какую проблему вы пытаетесь решить.

soulbog

Проблема заключалась в том, чтобы выяснить, как получить значение A b изнутри фабрики из хэш-карты . Потому что, когда я добавить 2 EntityId и базы.поставить(значением EntityId, новый завод(значением EntityId,аргумент1)); создает 2 фабрики
и решения, которые я опубликовал, дают мне нужные значения, но просто печатают их, но я могу легко сравнить их, если они у меня есть

Рейтинг:
0

Member 14491029

Здравствуйте, чтобы полностью понять, как работает карта и ее методы, вы можете проверить этот пример
Пример Карты Java