Вектор Java: каждый элемент содержит три объекта. Как действовать исходя из стоимости одного из них? - PullRequest
0 голосов
/ 06 мая 2018

Например, у меня есть vector(object1, object2, price). Как можно распечатать элементы, где цена> 100?

Все учебные пособия и документы (касающиеся работы таким образом) я видел только для обработки векторов, где каждый элемент содержит только один объект.

Так как же я могу получить дескриптор одного конкретного объекта внутри элемента? Или это вообще возможно?

Дополнительный вопрос: как они называются? То есть, если один элемент состоит из нескольких элементов, как называются эти элементы? Как и в базах данных, запись состоит из полей. Трудно гуглить материал, имя которого вы не знаете.

Main:

import java.util.Vector;

public static void main(String[] args){
    Scanner sc=new Scanner(System.in);
    String type;
    String location;
    double value;

    System.out.print("type->");
    type=sc.nextLine();

    System.out.print("location->");
    location=sc.nextLine();

    Property prop=new Property(type,location);

    System.out.print("value->");
    value=sc.nextDouble();

    InsuranceInfo insu=new InsuranceInfo(prop,value);
    container.addInsuranceInfo(insu);
}

Класс InsInfoContainer:

public class InsInfoContainer {
    private Vector<InsuranceInfo> container;

    public InsInfoContainer() {
        container = new Vector<>(3, 1);
    }

    public void addInsuranceInfo(InsuranceInfo insu) {
        container.addElement(insu);
    }

public void print() {
        Iterator<InsuranceInfo> iter = container.iterator();
        while (iter.hasNext()) {System.out.println(iter.next());}
    }

Класс InsuranceInfo:

public class InsuranceInfo {
    public InsuranceInfo(Property prop, double value) {
        this.prop = prop;
        this.value = value;
    }

    private Property prop;
    private double value;

    public Property getProp() {return prop;}
    public void setProp(Property prop) {this.prop = prop;}
    public double getValue() {return value;}
    public void setValue(double value) {this.value= value;}
}

Класс недвижимости:

public class Property {

    private String type;
    private String location;

    public Property(final String type, final String location) {
        this.type = type;
        this.location = location;
    }

    public String getType() {return this.type;}
    public void setType(final String type) {this.type = type;}
    public String getLocation() {return this.location;}
    public void setLocation(final String sijainti) {this.location = location;}
}

1 Ответ

0 голосов
/ 06 мая 2018

У вас есть контейнер для хранения InsuranceInfo:

private Vector<InsuranceInfo> container;

  1. Ваш container называется Collection
  2. Ваши InsuranceInfo экземпляры внутри вашего container называются element
  3. Ваши «предметы» внутри InsuranceInfo (Property, value) называются property или field из element

Чтобы перебрать вашу коллекцию container, обычные способы используют цикл for или цикл foreach:

public void print() {
    for (InsuranceInfo element: container) {
       if (element.getValue() > 100) { // Here is your condition to filter elements
          // Process your elements here
       }
    }
}

Вы также можете использовать Iterator, Stream, чтобы сделать это.

...