Oppgave 1
Function<String,Integer> f = String::length;
Oppgave 2
Function<String,Character> g = s -> Character.valueOf(s.charAt(0));
Oppgave 3
a) Det blir ingen syntaksfeil med String::concat
. Men det blir ikke noe mellomrom mellom de
to strengene.
b) BiFunction<String,String,String> sum = (x,y) -> x + " " + y; c) BiFunction<String,String,String> sum = (x,y) -> String.join(" ",x,y);
Oppgave 4
BiFunction<String,String,Person> person = Person::new; Function<Person,String> navn = Person::toString; BiFunction<String,String,String> personnavn = person.andThen(navn); System.out.println(personnavn.apply("Per", "Olsen")); // Utskrift: Per Olsen
Kan også lages litt kortere:
BiFunction<String,String,Person> person = Person::new;
BiFunction<String,String,String> personnavn = person.andThen(Person::toString);
Oppgave 5
String[] navn = {"Per","Kari","Arne","Petter","Margrethe","Jasmin"}; System.out.println(Arrays.toString(navn)); // gammelt innhold Arrays.setAll(navn, i -> navn[i].toUpperCase()); // gjør om System.out.println(Arrays.toString(navn)); // nytt innhold
Oppgave 6
String[] navn = {"Per","Kari","Arne","Petter","Margrethe","Jasmin"}; Boolean[] b = new Boolean[navn.length]; Arrays.setAll(b, i -> navn[i].indexOf('A') != -1 || navn[i].indexOf('a') != -1); System.out.println(Arrays.toString(b)); // Utskrift: [false, true, true, false, true, true]
Alternativ måte:
Arrays.setAll(b, i -> navn[i].toUpperCase().indexOf('A') != -1);
Oppgave 7
Her er det satt opp noe aktuelle tegn/bokstaver:
Character[] c = {'Å','Œ','Ç','Ñ','É','$','£','€','¥','Ð','_','#','%','&'}; Boolean[] b = new Boolean[c.length]; Arrays.setAll(b, i -> Character.isJavaIdentifierStart(c[i])); System.out.println(Arrays.toString(b)); // Sjekk utskriften - stemmer det med det du trodde?
Oppgave 8
double[] a = new double[10]; Arrays.setAll(a, i -> 1 + i/10.0); System.out.println(Arrays.toString(a)); // Utskrift: [1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]
Oppgave 9
Alle oppgavene starter med:
int[] a = new int[10];
a) Arrays.setAll(a, i -> i); eller: Arrays.setAll(a, IntUnaryOperator.identity()); b) Arrays.setAll(a, i -> a.length - i); c) Arrays.setAll(a, i -> 2*i + 1); d) Arrays.setAll(a, i -> (i + 1)*(i + 1)); e) Arrays.setAll(a, i -> i < 2 ? i : a[i-1] + a[i-2]); f) Arrays.setAll(a, i -> (i & 1) == 0 ? 0 : 1); g) Arrays.setAll(a, i -> (i & 1) == 0 ? i + 1 : -(i + 1));
Oppgave 10
String[] tall = {"10","12","9","13","5","20","17","3","11","10"}; int[] a = new int[tall.length]; Arrays.setAll(a, i -> Integer.parseInt(tall[i]));