2013-12-04 2 views
0

У меня есть список массивов, настроенных cars = new ArrayList(); который отлично работает, но мне нужно перебирать список машин в списке и выбирать любой из них под 10000, у меня есть переменный бюджет, установленный в 10000. Мне также нужно вернуть RegNumber, который является полем в машине в массиве список. ниже - это то, что у меня есть, и это просто не работает для меня. Есть идеи?Извлечь элементы из заданного значения из ArrayList java

public String listBudgetCars() 
{ 
    if (cars.size() > 0) 
    { 
     for (Car car : cars) 
     { 
      if(car.getPrice() > budget) 
      { 
       listBudgetCars = car; 
      } 
     } 
     return listBudgetCars.getRegNumber(); 
    } 
    else 
    { 
     return "No Cars"; 
    } 

} 
+5

В чем проблема? Кроме того, покажите нам код, который компилируется, пожалуйста. –

+0

У вас нет переменной 'listBudgetCars'. Может ли это быть проблема? – Blub

+0

Можете ли вы уточнить, что именно «не работает»? Он не будет компилироваться как есть, если только 'listBudgetCars' не определен. – Krease

ответ

4

Предполагая cars инициализируется и заполняется в другом месте, вы хотите что-то вроде этого:

public List<Car> budgetCars() { 
    List<Car> budgetCars = new ArrayList<>(); 
    for (Car car : cars) { 
     if (car.price < budget) { 
      budgetsCars.add(car); 
     } 
    } 

    return budgetCars; 
} 

А теперь budgetsCars список автомобилей, что вам нужно.

+0

Спасибо за помощь в помощи, @ isnot2bad. Я действительно устал. – Vidya

+0

Или используйте фильтр Google Guava http://guava-libraries.googlecode.com/svn/tags/release03/javadoc/com/google/common/collect/Collections2.html#filter(java.util.Collection, com.google. common.base.Predicate) –

+0

Действительно, но я думаю, что для начинающего легче всего понять возможности основного языка, прежде чем рассматривать сторонние библиотеки. Черт, разные языки JVM в целом, такие как Scala и Clojure, сделают это очень просто. – Vidya

3

Если вы используете Java 8, вы можете применить функцию фильтра:

List<Cars> budgetCars = cars.stream() 
          .filter(c -> c.getPrice() < budget) 
          .collect(Collectors.toList()); 
0

выбрать любой один автомобиль по бюджету и вернуть регистрационный номер. Предположим, что первое появление выбрано.

BigDecimal рекомендуется для обмена валюты. [used int]

public static String getRegistrationNumberUnderBudget(List<Car> cars, int budget) { 
    if(cars != null) { 
     for(Car car : cars) { 
      if(car.getPrice() < budget) { 
       return car.getRegNumber(); 
      } 
     } 
    } 
    return "No cars found"; 
} 
Смежные вопросы