Hur kan jag sortera en lista i alfabetisk ordning Stack Overflow

Lösningen med Collections.sort

Om du är tvungen att använda denna lista, eller om ditt program har en struktur som

  • Skapa lista
  • Lägg till några landsnamnen
  • sortera dem en gång
  • aldrig ändra listan igen

då Thilos svaret kommer att vara det bästa sättet att göra det. Om du kombinerar det med råd från Tom Hawtin – tackline. du får:

Lösning med en TreeSet

Om du är fri att avgöra, och om din ansökan kan få mer komplex, då kanske du ändra koden för att använda en TreeSet istället. Denna typ av insamling sorterar dina poster just när de sätts in. Inget behov av att ringa sort ().

Sidoanteckning om varför jag föredrar TreeSet

Detta har vissa subtila, men viktiga fördelar:

  • Det är helt enkelt kortare. Endast en rad kortare, dock.
  • Aldrig oroa sig för är den här listan verkligen sorteras nu becaude en TreeSet alltid sorteras, oavsett vad du gör.
  • Du kan inte ha dubbla poster. Beroende på din situation kan detta vara en pro eller en con. Om du behöver dubbletter, hålla fast vid din lista.
  • En erfaren programmerare ser på TreeSetlt, Stringgt; countyNames och omedelbart vet: detta är en sorterad samling strängar utan dubbletter, och jag kan vara säker på att detta är sant i varje ögonblick. Så mycket information i en kort förklaring.
  • Real prestanda vinna i vissa fall. Om du använder en lista och infoga värden mycket ofta, och listan kan läsas mellan dessa insättningar, då måste man sortera listan efter varje insättning. Uppsättningen gör samma sak, men gör det mycket snabbare.

Att använda rätt kollektion för rätt uppgift är en nyckel för att skriva kort och buggfri kod. Det är inte så demonstrativ i detta fall, eftersom du bara spara en linje. Men jag har slutat räkna hur ofta jag ser någon som använder en lista när de vill se till att det inte finns några duplictes, och sedan bygga den funktionalitet själva. Eller ännu värre, med två listor när du verkligen behöver en karta.

Do not get me fel: Använda Collections.sort är inte ett fel eller en brist. Men det finns många fall då TreeSet är mycket renare.

svarat 2 april ’09 vid 09:51

Källa: stackoverflow.com

Kommentera

E-postadressen publiceras inte. Obligatoriska fält är märkta *

tretton + 4 =