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.

67 lines
2.4 KiB

4 years ago
  1. "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)
  2. Tässä tehtävässä sinun tulee kirjoittaa luokka Leikkaus. Leikkaus-luokassa on oltava laskeLeikkaus-niminen metodi täsmälleen seuraavan kuvauksen mukaisena:
  3. - metodi on julkinen
  4. - metodi on staattinen eli luokkametodi
  5. - metodi palauttaa uuden listan, joka on tyyppiä List<Integer>
  6. - metodi saa parametriarvoinaan kaksi kokonaislukulistaa (List<Integer>)
  7. - metodi palauttaa leikkauksen kahdesta annetusta listasta, eli sellaisen listan, joka sisältää kaikki sellaiset luvut, jotka ovat molemmissa parametriarvoina saaduissa listoissa
  8. - kukin luku saa esiintyä leikkauksessa korkeintaan kerran
  9. - leikkauksen lukujen järjestyksellä ei ole merkitystä.
  10. 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.
  11. ```
  12. Example output:
  13. Lista A: [-70, 120, 98, 1, 789]
  14. Lista B: [98, 42, 5, 1, -70]
  15. Listojen A ja B leikkaus: [-70, 1, 98]
  16. ```
  17. --------------------
  18. **Leikkaus.java**
  19. ```
  20. import java.util.ArrayList;
  21. import java.util.Collections;
  22. import java.util.List;
  23. public class Leikkaus {
  24. public static void main(String[] args) {
  25. List<Integer> listaA = List.of(-70, 120, 98, 1, 789);
  26. List<Integer> listaB = List.of(98, 42, 5, 1, -70, 98);
  27. System.out.printf(
  28. "Listojen A ja B leikkaus: %s\n",
  29. Leikkaus.laskeLeikkaus(listaA, listaB)
  30. );
  31. }
  32. public static List<Integer> laskeLeikkaus(List<Integer> ekaLista, List<Integer> tokaLista) {
  33. List<Integer> leikkausLista = new ArrayList<Integer>();
  34. int i = 0;
  35. // Intersection
  36. while (i < ekaLista.size()) {
  37. int a = 0;
  38. while (a < tokaLista.size()) {
  39. // Get common values if leikkausLista does not contain the value already
  40. if (ekaLista.get(i) == tokaLista.get(a) && !leikkausLista.contains(tokaLista.get(a))) {
  41. leikkausLista.add(tokaLista.get(a));
  42. }
  43. a++;
  44. }
  45. i++;
  46. }
  47. Collections.sort(leikkausLista);
  48. return leikkausLista;
  49. }
  50. }
  51. ```