Løsningsforslag - oppgaver i Avsnitt 1.9.6


Oppgave 1

  public static String navnlengde(String[] navn, int lengde)
  {
    StringJoiner sj = new StringJoiner(", ", "[", "]");

    Arrays.stream(navn)
      .filter(x -> x.length() == lengde)
      .forEach(x ->  sj.add(x));

    return sj.toString();
  }

Oppgave 2

p.negate().or(q).negate() svarer til ¬(¬pq) = p ∧ ¬q. Siden p er sann for tall > 5 og ¬q er sann for tall ≥ 10, blir dette sant for tall ≥ 10.

  IntConsumer utskrift = x ->  System.out.print(x + " ");
  int[] a = {7, 3, 6, 10, 5, 4, 12, 17, 8, 16};  // en samling heltall
  IntPredicate p = x -> x > 5, q = x -> x < 10;
  Arrays.stream(a).filter(p.negate().or(q).negate()).forEach(utskrift);
  // Utskrift: 10 12 17 16