Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    Qualche domanda su Vector

    Ciao,
    qualche domanda per vedere se ho capito bene il significato del tipo Vector.

    Praticamente la classe Vector definisce un insieme di operazioni utili su di una collezione dinamnica di oggetti astraendo dal tipo effettivo degli elementi che ci posso mettere dentro (quindi serve a fare un'atrazione polimorfica), giusto?

    In parole povere se io dichiaro una variabile di tipo Vector, per esempio: Vector V stò dichiarando una collezione di oggetti e dentro V (dopo aver costruito la collezione mediante l'invocazione del costruttore) ci potrò andare a mettere dentro quello che mi pare.

    Ad esempio se ho un tipo Rettangoli potrò popolare la mia collezione V di Rettangoli mettendoceli dentro.

    Se invece ho 2 tipi di dato non omogenei, come ad esempio Rettangoli ed Animali posso mettere dentro Vector entrambi gli elementi e realizzare così una collezione non omogenea?

    Se si...praticamente la grossa differenza tra un Vector ed un vettore del C stà nel fatto che in un vettore C il compilatore vuole che il vettore abbia un tipo preciso (ad esempio int) ed il vettore viene allocato in maniera tale che ogni cella ha la dimensione adatta per contenere quel tipo di dato.

    Mentre Vector di Java che fà? Usa i puntatori? (nel senso che è come se si allocasse un vettore di puntatori ed in ogni cella ci mette il riferimento ad un certo oggetto e quindi posso avere un Vector che rappresenterà collezioni non omogenee)

    Ho capito bene?

    Grazie
    Andrea

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Qualche domanda su Vector

    Originariamente inviato da AndreaNobili
    Praticamente la classe Vector definisce un insieme di operazioni utili su di una collezione dinamnica di oggetti astraendo dal tipo effettivo degli elementi che ci posso mettere dentro (quindi serve a fare un'atrazione polimorfica), giusto?
    Le collezioni (Vector come anche le altre) lavorano appunto in modo "generico", senza essere legate ad un tipo preciso di oggetto. Modelli di contenitori di questo tipo sono definiti con il termine ADT (abstract data type) proprio perché la loro "astrazione" è semplicemente quella di fornire le funzionalità per gestire la collezione senza "sapere" nulla del tipo di dato contenuto. Dopotutto, per fare un esempio, una lista di oggetti String non funziona affatto diversamente (almeno concettualmente) da una lista di Integer o di JButton o di altro!! Per tutte queste si dovrà poter es. aggiungere l'elemento, cercarlo, rimuoverlo, ecc...

    Originariamente inviato da AndreaNobili
    In parole povere se io dichiaro una variabile di tipo Vector, per esempio: Vector V stò dichiarando una collezione di oggetti e dentro V (dopo aver costruito la collezione mediante l'invocazione del costruttore) ci potrò andare a mettere dentro quello che mi pare.


    Originariamente inviato da AndreaNobili
    Ad esempio se ho un tipo Rettangoli potrò popolare la mia collezione V di Rettangoli mettendoceli dentro.


    Originariamente inviato da AndreaNobili
    Se invece ho 2 tipi di dato non omogenei, come ad esempio Rettangoli ed Animali posso mettere dentro Vector entrambi gli elementi e realizzare così una collezione non omogenea?
    Tecnicamente sì (nota: tralasciamo per un momento i "generics" e la tipizzazione delle collezioni). Le collezioni trattano genericamente degli Object.

    Originariamente inviato da AndreaNobili
    Se si...praticamente la grossa differenza tra un Vector ed un vettore del C stà nel fatto che in un vettore C il compilatore vuole che il vettore abbia un tipo preciso (ad esempio int) ed il vettore viene allocato in maniera tale che ogni cella ha la dimensione adatta per contenere quel tipo di dato.
    In Java le collezioni sono oggetti che contengono altri oggetti. Nulla di questo centra con gli array del C.

    Originariamente inviato da AndreaNobili
    Mentre Vector di Java che fà? Usa i puntatori?
    Usa banalmente ..... un array Object[], e ne alloca uno nuovo (e ricopia gli elementi) man mano che serve.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.