Filtering out the correct car from a list of cars and retrieving only one car
Your solution is inefficient, for two reasons:


If there are multiple matches, the filteredCars lists gets unnecessarily populated.
It iterates over the entire list, even though it could stop immediately when a second match is found.


The appropriate exception type depends on your application and its purpose, for example:


If the caller is wrong to request a brand of which multiple cars exist,
then you could use IllegalArgumentException.
If the cars list is wrong to contain multiple cars of the requested brand, then you could use IllegalStateException.
If you want to give the caller a chance to recover from the bad call, then you should use a checked custom exception type, catch it and handle it.


Btw, it seems you forgot to handle the case of no matching cars,
which would result in an exception when you call .get(0).

As a minor remark, the name isCorrectBrand seems tedious. Simply isBrand would be more natural.

Consider this alternative:

public Car getCar(String brand) {
    return cars.stream()
            .filter(car -&gt; car.isBrand(brand))
            .reduce((a, b) -&gt; {
                throw new IllegalArgumentException("more than one matching cars");
            })
            .orElseThrow(() -&gt; new IllegalArgumentException("no matching cars"));
}