Lecture overview -- Keyboard shortcut: 'u'  Previous page: Flerdimensionelle arrays i Java -- Keyboard shortcut: 'p'  Next page: Eksempler på brug af Vector i Java -- Keyboard shortcut: 'n'  Lecture notes - all slides and notes together  slide -- Keyboard shortcut: 't'  Help page about these notes  Alphabetic index  Course home  Page 8 : 28
Forelæsningsnoter i Objekt-orienteret Programmering
Arrays og Lister
Fleksible arrays i Java: Vectorer

Java indeholder en klasse, som kaldes Vector. Et Vector objekt ligner et array objekt. En Vector er dog på flere måder mere fleksibel end et Array. Vi sætter fokus forskellene mellem Java's Array og Vector begreb på denne side.

Bemærk at Vector klassen nu er forældet i Java. Man bør således ikke bruge den længere. Brug derimod en Collection klasse, f.eks. ArrayList, jf. den tilknyttede henvisning.

Vector vectorNavn = new Vector(INITIEL_KAPACITET)

Et typisk eksempel på erklæring af et en vector og umiddelbar Vector instantiering. Erklæring og instantiering af en Vector foregår præcist som for andre objekter. Bemærk at elementtypen af en vector ikke angives eksplicit. Parameteren til konstruktoren spiller samme rolle som MAX_LIMIT i array erklæringen.

Vi karakteriserer nu Vector klassen i Java, og vi sammenligner med Java's iboende Arrays

  • Elementtypen af Vector er altid Object

    • Elementtypen af Array kan være mere specialiseret

Klassen Object er roden i Java's klassehierarki. Object er således den mest generelle klasse i Java systemet. Alle klasser er Object klasser.

  • Elementer i en Vector skal være objekter - værdier skal 'wrappes'

    • Værdier kan gemmes direkte i et Array

Vi minder om, at tal, tegn, og booleans er værdier i Java. Når vi wrapper sådanne værdier bliver de indlejret i et objekt.

  • Størrelsen af en Vector kan udvides under programudførelsen

    • Størrelsen på et array låses fast på Array instantieringstidspunktet

  • Flere operationer i Vector klassen skubber elementer frem eller tilbage i tabellen

    • Tilsvarende operationer i Array klassen overskriver elementer

Operationerne, som skubber elementer i en Vector er insertElementAt og removeElement.

  • Vector understøtter operationer som søger efter et element i tabellen

    • I et Array tilgås elementer altid ved tabelopslag via et indeks

Vil man søge i et array må man programmere det fra situation til situation. Man skal være opmærksom på, at søgning i en stor Vector kan være ineffektiv i forhold til opslag i et Array. Array opslag er altid af konstant tidskompleksitet, mens søgning i en Vector må forventes at være af lineær tidskompleksitet (lineær søgning). Søgning efter data i en Vector foregår med bl.a. operationerne contains, indexOf og removeElement.