Jak elegancko sprawdzić booleana?

0

Nie podoba mnie się poniższy kod, jak zrobić to ładniej?
A może jest jakaś guava do podobnych rzeczy?


	private Boolean checkingMethod(List<Book> books) {
		Boolean check = null;
		for (Book book: books) {
			if (book.getValue() != null) {
				check = true;
			} else {
				check = false;
			}
		}
		return check;

Z góry thx za pomoc.

0

W ogole to zle to zrobilem... poniewaz po kazdym if statement nadpisuje tego checka, wiec do d**y cos takiego :D

0

a właściwie co ta metoda robi skoro iterujesz się po całej liście a i tak zapamiętujesz wynik z ostatniego elementu :)?

0

Dokładnie, sam to zauważyłem i się wyśmiałem. Trochę się zapętliłem bo to większy wycinek całości i mało czytelne się to robi...

No to coś takiego...

private Boolean checkingMethod(List<Book> books) {
        Boolean check = null;
        for (Book book: books) {
            if (book.getValue() == null) {
                check = false;
                break;
            } else {
                check = true;
            }
        }
        return check;

Ale pewnie można to ładniej napisać heh.

0
check = book.getValue() != null;
if(!check)
    break;
2
boolean result = someObjects.stream().anyMatch(obj -> some_condition_met);

aka

return books.stream().anyMatch(book -> book.getValue() != null);
0

Nawet lepiej

private Boolean checkingMethod(List<Book> books) {
        for (Book book: books) {
            if (book.getValue() == null) {
                return false;
            }
        }
        return true;
}
0

czyli co do zasady metoda sprawdza czy wszystkie wartosci kolekcji nie maja wartosci null i jesci takowa sie pojawi to zwraca false dobrze zrozumialem ? czemu zwraczasz obiekt boolean potrzebujesz go gdzies ?

1

Dodaj do Book metodę hasValue lub zwróć Optional<Value>, a później użyj sugestii @spartanPAGE

0
Rossik napisał(a):

czyli co do zasady metoda sprawdza czy wszystkie wartosci kolekcji nie maja wartosci null i jesci takowa sie pojawi to zwraca false dobrze zrozumialem ? czemu zwraczasz obiekt boolean potrzebujesz go gdzies ?

Dokładnie.

Tak, wartość jaką uzyskam będę używał gdzieś indziej.

I mam do dyspozycji java 7 i guave.

0
Krwawy Szczur napisał(a):

Nawet lepiej

private Boolean checkingMethod(List<Book> books) {
        for (Book book: books) {
            if (book.getValue() == null) {
                return false;
            }
        }
        return true;
}

w sumie nie wygląda tak źle :p

Guava ma też np.
isPresent() - Returns true if this holder contains a (non-null) instance.
albo cuda jak
Optional.fromNullable(var).orNull(

1 użytkowników online, w tym zalogowanych: 0, gości: 1