Java fundamentals through coding exercises
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

2.4 KiB

"Leikkaus on joukko-opin käsite. Joukkojen A ja B leikkaus sisältää kaikki ne alkiot, jotka kuuluvat sekä joukkoon A että joukkoon B. Joukkojen A ja B leikkausta merkitään A ∩ B." (Wikipedia)

Tässä tehtävässä sinun tulee kirjoittaa luokka Leikkaus. Leikkaus-luokassa on oltava laskeLeikkaus-niminen metodi täsmälleen seuraavan kuvauksen mukaisena:

  • metodi on julkinen
  • metodi on staattinen eli luokkametodi
  • metodi palauttaa uuden listan, joka on tyyppiä List
  • metodi saa parametriarvoinaan kaksi kokonaislukulistaa (List)
  • metodi palauttaa leikkauksen kahdesta annetusta listasta, eli sellaisen listan, joka sisältää kaikki sellaiset luvut, jotka ovat molemmissa parametriarvoina saaduissa listoissa
  • kukin luku saa esiintyä leikkauksessa korkeintaan kerran
  • leikkauksen lukujen järjestyksellä ei ole merkitystä.

Kirjoita myös main-metodi, jossa kokeilet haluamallasi tavalla, että kirjoittamasi koodi toimii oikein. Tässä tehtävässä main-metodisi saa tulostaa mitä tahansa. Tehtävän tarkastus ei perustu kirjoittamaasi main-metodiin, vaan erilliseen valmiiksi kirjoitettuun testiluokkaan.

Example output:
Lista A: [-70, 120, 98, 1, 789]
Lista B: [98, 42, 5, 1, -70]
Listojen A ja B leikkaus: [-70, 1, 98]

Leikkaus.java

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class Leikkaus {
public static void main(String[] args) {
List<Integer> listaA = List.of(-70, 120, 98, 1, 789);
List<Integer> listaB = List.of(98, 42, 5, 1, -70, 98);
System.out.printf(
"Listojen A ja B leikkaus: %s\n",
Leikkaus.laskeLeikkaus(listaA, listaB)
);
}
public static List<Integer> laskeLeikkaus(List<Integer> ekaLista, List<Integer> tokaLista) {
List<Integer> leikkausLista = new ArrayList<Integer>();
int i = 0;
// Intersection
while (i < ekaLista.size()) {
int a = 0;
while (a < tokaLista.size()) {
// Get common values if leikkausLista does not contain the value already
if (ekaLista.get(i) == tokaLista.get(a) && !leikkausLista.contains(tokaLista.get(a))) {
leikkausLista.add(tokaLista.get(a));
}
a++;
}
i++;
}
Collections.sort(leikkausLista);
return leikkausLista;
}
}