---
title: "Jämföra strängar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/119832-jämföra-strängar"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Broms"
published: "2005-01-11T15:25:11.000Z"
updated: "2005-01-13T14:05:05.000Z"
replies: 8
views: 619
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/119832-jämföra-strängar"
---

# Jämföra strängar

## #1 — Broms, 2005-01-11T15:25Z

Hur jämför man enklast 2 strängar, alltså inte om de är lika, utan vilken som kommer först i alfabetet MED svenska tecken? så att katt kommer före kött, och att örn kommer före orm..

då ord1 finns att hämtas i lista*.getOrd(), och ord2 finns i temp_ord.

Jag vill lagra alla ord i objekt, i arrayen lista\[\], och sedan sortera arrayen efter bokstavsordning... så att när man matar in nytt ord så jämförs det med varje ord, så att när man hittat dess plats så flyttar man alla andra ord bakåt i arrayen, eller ska man istället förutom namnet lagra ett index i objektet, alltså objektet Ord(ordet,dess_plats), och ändra bara den siffran, och låta det ligga på ursprunglig plats i arrayen?

Vore tacksam för tips, och gärna gärna något enkelt kodexempel..*

Permalänk: https://www.webforum.nu/p/119832

## #2 — spango, 2005-01-11T17:39Z

Positionen i arrayen ska inte vara en del av objektet. Det här luktar iofs skoluppgift lång väg, så jag vet inte om det är OK att göra så, men det enklaste sättet att hålla en bunt objekt sorterade är med ett [SortedSet](http://java.sun.com/j2se/1.4.2/docs/api/java/util/SortedSet.html) som t.ex. [TreeSet](http://java.sun.com/j2se/1.4.2/docs/api/java/util/TreeSet.html).

Permalänk: https://www.webforum.nu/p/1525438

## #3 — Broms, 2005-01-11T19:22Z

Faktiskt är det ingen uppgift för skolans räkning utan en sak jag funderat på länge.. Jag läste någonstans förut om en funktion som jämförde 2 ord direkt, och med viss modifiering även fungerade för andra tecken än´det i alfabetet a-z, du vet ingenting om en sådan funktion?

Permalänk: https://www.webforum.nu/p/1525490

## #4 — spango, 2005-01-12T09:01Z

Använd [Collator](http://java.sun.com/j2se/1.3/docs/api/java/text/Collator.html) för att göra regionsspecifika jämförelser.

Permalänk: https://www.webforum.nu/p/1525702

## #5 — Broms, 2005-01-12T13:06Z

tack spango, den funktionen jag sökte, men den fungerar väl inte för tecken utanför intervallet a-z/A-Z? Tänkte att det skulle fungera för svenska ord också...

Permalänk: https://www.webforum.nu/p/1525813

## #6 — antilizaer, 2005-01-12T15:34Z

Har inte använt mig av Collator men om man kollar i API:t så borde det väl fungerar om man skickar in ett "svenskt" Locale objekt i getInstance() metoden:

```
Collator col = Collator.getInstance(new Locale("sv", "se"));
```

Permalänk: https://www.webforum.nu/p/1525907

## #7 — spango, 2005-01-12T18:00Z

Använder man bara Collator.getInstance() returnerar den kollatorn för användarens defaultregion, så svenskar får svensk sortering, tyskar tysk, jänkare amerikansk et.c. Men vill man vara helt hundra på att det verkligen är den svenska som används gör man som antilizaer föreslår.

Permalänk: https://www.webforum.nu/p/1526003

## #8 — Broms, 2005-01-13T11:42Z

Visst, folk talar om att använda Collator, och någon nämnde bubbleSort.. men om jag har ett ett fält personer\[\] innehållandes massa objekt, i sin tur innehållandes information namn och ålder, (String namn, int alder).. och jag har en metod i personklassen, för att hämta ut och returnera namnet ur varje objekt... hur sorterar jag då denna array med namn, genom t.ex. en for-sats innehållande if-satser kontrollerandes namnens "storlek"? och om det är större än ett visst namn så läggs det bakom det tidigare, och sedan kontrolleras igen om namnet bakom är mindre, i sådana fall flyttas det bak ännu ett steg..? if(personer.getName() /\*vad här?\*/ ){ /\* gör något.. was?\*/ }

Själva jämförelsens utseende tolkar jag som följande:

```php
Collator col = Collator.getInstance(new Locale("sv", "se"));

for(int i=0; i<ANTAL_PERSONER; i++){
 if( co.compare(personer[i-1].getNamn(), personer[i].getNamn()) < 0 )
     System.out.println("1a personen kommer först");
 else
     System.out.println("2a personen kommer först");
}
//men hur använder jag detta till att sortera?! Iställer för utskrifterna ska 
//jag sortera fältet, men how to??
```

ingen som kan tota ihop ett kort exempel på detta?

Permalänk: https://www.webforum.nu/p/1526369

## #9 — spango, 2005-01-13T14:05Z

Det finns en bunt sätt att göra det på, ett sätt är  att låta objekten som ska sorteras implementera Comparable.

```
class Person implements Comparable {

  private static final Collator SV_SE = Collator.getInstance(new Locale("sv", "se"));

  // lägg till fält, metoder etc. efter behov ...
  
  public int compareTo(Object obj){
    Person other = (Person) obj;
    // jämför namnen:
    return SV_SE.compare(this.getName(), other.getName());
  }

}
// ...
Person[] personer = vadSomHelst();
Arrays.sort(personer); // använder compareTo i Person
```

Permalänk: https://www.webforum.nu/p/1526448

---

Tråden på webben: https://www.webforum.nu/amne/java/119832-jämföra-strängar
