2011-08-19 1 views
2

Je suis devenu très friand de certaines structures en C++, et j'ai récemment porté sur des projets old school à Java, mais j'ai rencontré quelques problèmes qui n'ont pas été résolus par simples recherches google ... Alors je me suis que je demande ici:C++ to java, questions d'équivalence de langage

En C++ je suis assez friand de Stringstream, vector, list et dequeue, mais n'ont pas été en mesure de trouver une documentation adéquate sur l'un des leur. Lorsque j'essaie d'utiliser Vector, netbeans me dit que c'est obsolète, est-ce que cela signifie qu'un autre code a pris sa place? Y a-t-il un autre conteneur que je devrais utiliser à la place?

Merci!

Répondre

5

Pour Stringstream vous pouvez utiliser java.io.ByteArrayOutputStream

C++ 's Vector<T> est fondamentalement la même que java.util.ArrayList<T>

Le match le plus proche pour list<T> serait java.util.LinkedList<T> - les deux sont mis en œuvre sous forme de listes doublement chaînées (bien que si tout ce que vous voulez est une collection ordonnée d'éléments vous devriez probablement utiliser l'interface plus générique, java.lang.List<T>)

Vous pouvez également utiliser java.util.LinkedList<T> pour votre implémentation ion de deque<T>. java.util.LinkedList<T> implémente toutes les fonctions nécessaires pour une file d'attente/pile.

La raison pour laquelle NetBeans vous dit Vector<T> est obsolète parce qu'il est généralement préférable d'utiliser les structures de données introduites par l'API Java Collections. À la place de Vector<T> lieu, vous devriez utiliser des choses comme java.util.ArrayList<T> ou java.util.LinkedList<T>.

+2

+1 pour mentionner java.lang.List . Cela vaut la peine de comprendre comment Java peut définir une variable génériquement (Liste ) et ensuite l'instancier avec votre implémentation préférée (LinkedList , ArrayList ) – Chap

+0

Merci beaucoup pour votre réponse, je suppose que je vais faire un tour à LinkedList! – HunderingThooves

0

Si je ne me trompe pas, Vector est encore plus lent que ArrayList car il est synchronisé.

+0

Vous n'avez pas tort. De plus, la synchronisation est naïve, donc ce n'est pas vraiment utile. C'est pourquoi vous devez toujours utiliser les API de synchronisation les plus récentes telles que 'Collections.synchronizedList()' ou 'CopyOnWriteArrayList', etc. – Bringer128