/* * Olio-ohjelmoinnin perusteet I. * * Lasketaan taulukkolistan erillisten alkioiden lukumäärä kolmella eri menetelmällä. * * Jorma Laurikkala (jorma.laurikkala@tuni.fi). * * Viimeksi muutettu 18.2.2020. * */ // Otetaan käyttöön Collections-kirjaston osat. import java.util.*; public class AggregaatioDemo1 { public static void main(String[] args) { // Muodostetaan taulukosta taulukkolista. Integer[] taulu = { 42, 13, 42, 31, 13 }; ArrayList taululista = new ArrayList<>(Arrays.asList(taulu)); // Lasketaan erilliset silmukalla. int lkm1 = 0; if (taululista.size() > 0) { Collections.sort(taululista); lkm1++; for (int i = 0; i < taululista.size() - 1; i++) { Integer nykyinen = taululista.get(i); Integer seuraava = taululista.get(i + 1); if (!nykyinen.equals(seuraava)) { lkm1++; } } } System.out.println(lkm1); // 3 // Hyödynnetään toista tietorakennetta. HashSet joukko = new HashSet(); joukko.addAll(taululista); int lkm2 = joukko.size(); System.out.println(lkm2); // 3 // Lasketaan erilliset alkiot putkella. Putki muotoillaan usein siten, // että operaatiot sijoitetaan erillisille riveille ja rivit sisennetään. int lkm3 = (int)taululista .stream() // Muodostetaan tietovirta. .distinct() // Välioperaatio muodostaa erillisten alkioiden virran. .count(); // Pääteoperaatio laskee virran alkiot. System.out.println(lkm3); // 3 } }