an ADT object.it make to used with Data type in programming language Perimitive and non perimitive data type. Localization of change Code that uses an ADT object will not need to be edited if the implementation of the ADT is changed. Since any changes to the implementation must still comply with the interface, and since code using an ADT object may only refer to properties and abilities specified in the interface, changes may be made to the implementation without requiring any changes in code where the ADT is used. Flexibility Different implementations of the ADT, having all the same properties and abilities, are equivalent and may be used somewhat interchangeably in code that uses the ADT. This gives a great deal of flexibility when using ADT objects in different situations. For example, different implementations of the ADT may be more efficient in different situations; it is possible to use each in the situation where they are preferable, thus increasing overall efficiency. Typical operations Some operations that are often specified for ADTs (possibly under other names) are compare(s, t), that tests whether two instances' states are equivalent in some sense; hash(s), that computes some standard hash function from the instance's state; print(s) or show(s), that produces a human-readable representation of the instance's state. In imperative-style ADT definitions, one often finds also create(), that yields a new instance of the ADT; initialize(s), that prepares a newly created instance s for further operations, or resets it to some "initial state"; copy(s, t), that puts instance s in a state equivalent to that of t; clone(t), that performs s ← create(), copy(s, t), and returns s; free(s) or destroy(s), that reclaims the memory and other resources used by s. The free operation is not normally relevant or meaningful, since ADTs are theoretical entities that do not "use memory". However, it may be necessary when one needs to analyze the storage used by an algorithm that uses the ADT. In that case, one needs additional axioms that specify how much memory each ADT instance uses, as a function of its state, and how much of it is returned to the pool by free. Examples Some common ADTs, which have proved useful in a great variety of applications, are Collection Container List String Set Multiset Map Multimap Graph Tree Stack Queue Priority queue Double-ended queue Double-ended priority queue Each of these ADTs may be defined in