001 import java.util.ArrayList; 002 import java.util.Vector; 003 import java.util.LinkedList; 004 import java.util.Iterator; 005 import java.util.Collection; 006 import java.util.Collections; 007 import java.util.Comparator; 008 import java.util.List; 009 import java.io.*; 010 import fi.jyu.mit.ohj2.*; 011 012 /** 013 * Esimerkki Javan algoritmien käytöstä Java 1.5:n geneerisyyden 014 * ja "autoboxin" avulla. Käytössä myös uusi for-silmukka. 015 * @author Vesa Lappalainen 016 * @version 1.0, 05.03.2002 017 * @version 1.1, 01.03.2005 018 */ 019 020 public class AlgoritmiMalliGen { 021 022 /** 023 * Luokka joka vertailee kahta kokonaislukuoliota ja 024 * palauttaa niiden järjestyksen niin, että lajittelu menee 025 * laskevaan järjestykseen. 026 */ 027 public static class LaskevaInt implements Comparator<Integer> { 028 public int compare(Integer o1, Integer o2) { 029 return o2 - o1; 030 } 031 } 032 033 public static void tulosta(OutputStream os, Collection<Integer> luvut) { 034 PrintStream out = Tiedosto.getPrintStream(os); 035 for (Integer i : luvut ) { 036 int luku = i; 037 out.print(luku + " "); 038 } 039 out.println(); 040 } 041 042 043 public static void main(String[] args) { 044 ArrayList<Integer> luvut = new ArrayList<Integer>(); 045 try { 046 luvut.add(0); luvut.add(2); 047 luvut.add(99); luvut.add(7); 048 luvut.add(22); luvut.add(71); 049 } catch ( Exception e ) { 050 System.out.println("Virhe: " + e.getMessage()); 051 } 052 System.out.println(luvut); // [0, 2, 99, 7, 22, 71] 053 054 Collections.sort(luvut); 055 tulosta(System.out,luvut); // 0 2 7 22 71 99 056 Collections.sort(luvut,new LaskevaInt()); 057 tulosta(System.out,luvut); // 99 71 22 7 2 0 058 Collections.shuffle(luvut); 059 tulosta(System.out,luvut); // 99 2 7 71 0 22 060 Collections.sort(luvut,Collections.reverseOrder()); 061 tulosta(System.out,luvut); // 99 71 22 7 2 0 062 Collections.reverse(luvut); 063 tulosta(System.out,luvut); // 0 2 7 22 71 99 064 065 int suurin = Collections.max(luvut); 066 System.out.println("Suurin = " + suurin); // Suurin = 99 067 int pienin = Collections.min(luvut); 068 System.out.println("Pienin = " + pienin); // Pienin = 0 069 pienin = Collections.max(luvut,new LaskevaInt()); 070 System.out.println("Pienin = " + pienin); // Pienin = 0 071 072 List<Integer> luvut2 = new LinkedList(); 073 luvut2.addAll(0,luvut); 074 // luvut2.add("Kissa"); // ei mahdollista jos tyyppi ilmoitettu listalle 075 tulosta(System.out,luvut2); // 0 2 7 22 71 99 076 luvut2 = luvut.subList(2,5); 077 tulosta(System.out,luvut2); // 7 22 71 078 079 } 080 }