Løsningsforslag - oppgaver i Avsnitt 1.4.10


Oppgave 1

Collator er definert i java.text. Koden må derfor ligge i en klasse der dette importeres, dvs. setningen import java.text.*; må være med.

Oppgave 2

Utskriften blir:

[A, a, B, b, C, c, Ä, ä, Å, å, Ö, ö]
[A, B, C, a, b, c, Ä, Å, Ö, ä, å, ö]
[a, A, å, Å, ä, Ä, b, B, c, C, ö, Ö]

Oppgave 4

Utskriften blir:

[a, A, b, B, c, C, æ, Æ, ø, Ø, å, Å]

Oppgave 5

Regel 1 sier at liten a er mindre enn stor A.

  String[] s = {"A","a","aC","AaB","aAB"};

  String regel1 = "< a < A < b < B";
  Arrays.sort(s,new RuleBasedCollator(regel1));
  System.out.println(Arrays.toString(s));
  // Utskrift: [a, aAB, aC, A, AaB

Regel 2 sier at i forhold til de andre bokstavene er liten a og stor A samme bkstav. Men innbyrdes er liten a mindre enn stor A.

  String regel2 = "< a,A < b,B";
  Arrays.sort(s,new RuleBasedCollator(regel2));
  System.out.println(Arrays.toString(s));
  // Utskrift: [a, A, aAB, AaB, aC  

Oppgave 6

En norsk regel:

  String norsk =
    "< a,A < b,B < c,C < d,D < e;é,E;É < f,F < g,G < h,H < i,I"
    + " < j,J < k,K < l,L < m,M < n,N < o;ô,O;Ô < p,P < q,Q < r,R"
    + " < s,S < t,T < u,U < v,V < w,W < x,X < ü = y,Y = Ü < z,Z"
    + " < ä = æ,Æ = Ä < ö = ø,Ø = Ö < å = aa,Aa = Å";

Klassen Kollator:

import java.text.*;

public class Kollator
{
  private Kollator(){}

  private static final String norsk =
    "< a,A < b,B < c,C < d,D < e;é,E;É < f,F < g,G < h,H < i,I"
    + " < j,J < k,K < l,L < m,M < n,N < o;ô,O;Ô < p,P < q,Q < r,R"
    + " < s,S < t,T < u,U < v,V < w,W < x,X < ü = y,Y = Ü < z,Z"
    + " < ä = æ,Æ = Ä < ö = ø,Ø = Ö < å = aa,Aa = Å";

  public static Collator norsk()
  {
    try
    {
      return new RuleBasedCollator(norsk);
    }
    catch(ParseException p)
    {
      return null;
    }
  }

} // Kollator

Klassen Kollator kan brukes slik:

  public static void main(String[] args)
  {
    String[] s = {"?","2","1","A","B","C","a","b","c",
      "Æ","Ø","Å","æ","ø","å","Ä","Ö","Ü","Ô","É","ä","ö","ü","ô","é"};

    Collator c = Kollator.norsk();

    Tabell.innsettingssortering(s, c);

    System.out.println(Arrays.toString(s));

    // Utskrift:
    // [a, A, b, B, c, C, é, É, ô, Ô, ü, Ü, æ, ä, Æ, Ä, ø, ö, Ø, Ö, å, Å, 1, 2, ?]
  }

Oppgave 7

Utskrift: [å, aa, aa, å, Aa, Å, Å, Aa]

Oppgave 8

Utskrift: [datafreak, datamaskin, datasjef, dataansatt]

Oppgave 9

  String norsk =
    "< 0 < ¼ < ½ < ¾ < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9"
    + "< a,A < b,B < c,C < d,D < e;é,E;É < f,F < g,G < h,H < i,I"
    + " < j,J < k,K < l,L < m,M < n,N < o;ô,O;Ô < p,P < q,Q < r,R"
    + " < s,S < t,T < u,U < v,V < w,W < x,X < ü = y,Y = Ü < z,Z"
    + " < ä = æ,Æ = Ä < ö = ø,Ø = Ö < å = aa,Aa = Å";