Вау, спасибо всем за ответы, в основном @user1105, @mcroteau и @oleg.cherednik!
Я не предоставил свой код, потому что думал, что вы, ребята, просто скажете мне, какой метод использовать, а не предоставите весь код :-)
Далее:
- Я попытаюсь добавить свои объекты в список ArrayList: я хочу иметь возможность добавлять новые автомобили в список, и я не уверен, что простой массив будет правильным вариантом, так как мне нужно увеличивать его длину каждый раз, когда я добавить объект.
- Мне нужно научиться форматировать результаты, чтобы они отображались без скобок и всего такого, создавать новую строку после каждого объекта...
Вот мой код, надеюсь, кто-нибудь найдет его полезным для своих целей. Я использую Android Studio, поэтому кнопки textView...
public class MainActivity extends AppCompatActivity {
Button btnRed, btnBlue;
TextView tvResult;
public static class Car{
public Car(String color, String model, Integer mileage){
this.color = color;
this.model = model;
this.mileage = mileage;
}
String model;
String color;
int mileage;
@Override
public String toString() {
return "Car{" +
"model='" + model + '\'' +
", color='" + color + '\'' +
", mileage=" + mileage +
'}';
}
// just in case I need it in the future
public String getModel() {
return model;
}
public String getColor() {
return color;
}
public int getMileage() {
return mileage;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// these are buttons and a textview used in my app
btnBlue = findViewById(R.id.btnBlue);
btnRed = findViewById(R.id.btnRed);
tvResult = findViewById(R.id.tvResult);
Car[] allCarsList = new Car[27];
allCarsList[0] = new Car("Red", "Mercedes", 124500);
allCarsList[1] = new Car("Blue", "Mercedes", 45321);
allCarsList[2] = new Car("Red", "Audi", 76142);
allCarsList[3] = new Car("Green", "BMW", 210367);
allCarsList[4] = new Car("Blue", "Peugeot", 97000);
allCarsList[5] = new Car("Yellow", "Audi", 3451);
allCarsList[6] = new Car("Red", "BMW", 100320);
allCarsList[7] = new Car("Green", "BMW", 54677);
allCarsList[8] = new Car("Red", "Mercedes", 8543);
allCarsList[9] = new Car("Yellow", "Audi", 342);
allCarsList[10] = new Car("Blue", "Audi", 4321);
allCarsList[11] = new Car("Red", "Peugeot", 7242);
allCarsList[12] = new Car("Green", "BMW", 908);
allCarsList[13] = new Car("Blue", "Peugeot", 8776);
allCarsList[14] = new Car("Yellow", "Audi", 90089);
allCarsList[15] = new Car("Red", "BMW", 145678);
allCarsList[16] = new Car("Green", "BMW", 24324);
allCarsList[17] = new Car("Red", "Mercedes", 76598);
allCarsList[18] = new Car("Red", "Ford", 5564);
allCarsList[19] = new Car("Blue", "Mercedes", 4336);
allCarsList[20] = new Car("Red", "Audi", 65543);
allCarsList[21] = new Car("Green", "BMW", 95634);
allCarsList[22] = new Car("Blue", "Audi", 23142);
allCarsList[23] = new Car("Yellow", "Ford", 87334);
allCarsList[24] = new Car("Red", "Tesla", 2143);
allCarsList[25] = new Car("Green", "BMW", 675);
allCarsList[26] = new Car("Red", "Mercedes", 976);
//when "Blue" button is pressed
btnBlue.setOnClickListener(new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View view) {
ArrayList<Car> blueCars = new ArrayList<>() ;
for(int i = 0; i < allCarsList.length ; i++){
if(allCarsList[i].getColor().equalsIgnoreCase("Blue")){
blueCars.add(allCarsList[i]);
}
}
Comparator<Car> comparatorMileage = Comparator.comparingInt(Car::getMileage);
blueCars.sort(comparatorMileage);
//display the Red Cars list, sorted by mileage on the textview
tvResult.setText(blueCars.toString());
}
});
//when Red button is pressed
btnRed.setOnClickListener((new View.OnClickListener() {
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public void onClick(View view) {
ArrayList<Car> redCars = new ArrayList<>();
for(int i = 0; i < allCarsList.length ; i++){
if(allCarsList[i].getColor().equalsIgnoreCase("Red")){
redCars.add(allCarsList[i]);
}
}
Comparator<Car> comparatorMileage = Comparator.comparingInt(Car::getMileage);
redCars.sort(comparatorMileage);
//display the Red Cars list, sorted by mileage on the textview
tvResult.setText(redCars.toString());
}
}));
}
Покажите нам работу, которую вы сделали
Покажите нам свой код, чтобы нам было проще вам помочь, посмотреть, какое решение соответствует вашему коду, и чтобы у вас было готовое решение, не требующее адаптации.
Можете ли вы написать код, который сообщает вам, следует ли отображать данный экземпляр? Можете ли вы написать код, применяющий одну и ту же логику ко всем экземплярам? Учитывая эти два шага, можете ли вы решить проблему? Если нет, то почему? Что произошло, когда вы попытались написать код для решения проблемы? Ожидается, что вы попытаетесь решить проблему. Мы можем помочь вам выбраться из тупика только в том случае, если вы покажете нам, где вы застряли.