Journal Problème Java et Collator

Posté par  (site web personnel) .
Étiquettes : aucune
0
29
oct.
2003
Avec :


import java.util.Locale;
import java.util.ArrayList;
import java.util.Collections;
import java.text.Collator;

public class Test {
public static void main(String[] args) {


Collator lCollator = Collator.getInstance(Locale.FRENCH);

ArrayList lList = new ArrayList();
lList.add("raté");
lList.add("rate");
lList.add("Raté");
lList.add("Ratiboisé");
lList.add("Albert Einstein");
lList.add("aliment");
lList.add("Zorro");
lList.add("Albert");
lList.add("Ratés");

lCollator.setStrength(Collator.PRIMARY);
Collections.sort(lList, lCollator);
System.out.println("Tri : \n" + lList);

lCollator.setStrength(Collator.SECONDARY);
Collections.sort(lList, lCollator);
System.out.println("Tri : \n" + lList);

lCollator.setStrength(Collator.TERTIARY);
Collections.sort(lList, lCollator);
System.out.println("Tri : \n" + lList);

lCollator.setStrength(Collator.IDENTICAL);
Collections.sort(lList, lCollator);
System.out.println("Tri : \n" + lList);

}


J'obtiens :

Tri :
[Albert, Albert Einstein, aliment, raté, rate, Raté, Ratés, Ratiboisé, Zorro]
Tri :
[Albert, Albert Einstein, aliment, rate, raté, Raté, Ratés, Ratiboisé, Zorro]
Tri :
[Albert, Albert Einstein, aliment, rate, raté, Raté, Ratés, Ratiboisé, Zorro]
Tri :
[Albert, Albert Einstein, aliment, rate, raté, Raté, Ratés, Ratiboisé, Zorro]


Pourquoi le setStrength(..) ne change rien ?
Qu'ai je mal fait ?

Merci
  • # Re: Problème Java et Collator

    Posté par  . Évalué à 1.

    Chez moi, ça fonctionne, essaye cela, ou regarde ta JVM :

    import java.text.*;

    public class test1 {

    static String a = "A";
    static String b = "a";
    static String c = "à";

    public static final void main( String[] argv ) {

    System.out.println( "PRIMARY" );
    diff( Collator.PRIMARY );
    System.out.println( "SECONDARY" );
    diff( Collator.SECONDARY );
    System.out.println( "TERTIARY" );
    diff( Collator.TERTIARY );
    System.out.println( "IDENTICAL" );
    diff( Collator.IDENTICAL );
    }

    static void diff( int strengh ) {

    System.out.println( "> " + a + " " + a + " -> " + comp( a, a, strengh ) );
    System.out.println( "> " + b + " " + a + " -> " + comp( b, a, strengh ) );
    System.out.println( "> " + c + " " + a + " -> " + comp( c, a, strengh ) );
    }

    static String comp( String a, String b, int strengh ) {

    Collator col = Collator.getInstance(java.util.Locale.FRENCH);
    col.setStrength(strengh);
    return col.compare(a,b) == 0 ? "egale" : "différent";
    }
    }

    Ca donne :

    PRIMARY
    > A A -> egale
    > a A -> egale
    > à A -> egale
    SECONDARY
    > A A -> egale
    > a A -> egale
    > à A -> différent
    TERTIARY
    > A A -> egale
    > a A -> différent
    > à A -> différent
    IDENTICAL
    > A A -> egale
    > a A -> différent
    > à A -> différent
  • # Re: Problème Java et Collator

    Posté par  (site web personnel) . Évalué à 1.

    Ah bin si ça a changé

    J'avais pas vu le 'raté' et 'rate' intervertis. Au temps pour moi. Et de plus l'ordre initiale doit être responsable de l'inertie du résultat.

    Merci

    L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

    • [^] # Re: Problème Java et Collator

      Posté par  (site web personnel) . Évalué à 1.

      Et en plus j'avais mal compris la javadoc

      L'association LinuxFr ne saurait être tenue responsable des propos légalement repréhensibles ou faisant allusion à l'évêque de Rome, au chef de l'Église catholique romaine ou au chef temporel de l'État du Vatican et se trouvant dans ce commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.