Interview Java Collections: Generic



Question 1 : What is difference between List<?> and List<Object> in Java?
Answer :
List<?> is List of unknown type while List<Object> is essentially List of any Type.
You can assign List<String>, List<Integer> to List<?> but you can not assign List<String> to List<Object>.
This is because List<Object> can store any any thing including String, Integer etc but List<String> can only store Strings.

Question 2 : Can you pass List<String> to a method which accepts List<Object> ?
Answer :
In first glance it looks like : String is Object so List<String> can be used where List<Object> is required but this is not true.
It will result in compilation error.
This is because List<Object> can store any any thing including String, Integer etc but List<String> can only store Strings !!.

Question 3 : What is Bounded and Unbounded wildcards in Generics ?
Bounded wildcards are :
<? extends T> which impose an upper bound by ensuring that type must be sub class of T.
<? super T> where its imposing lower bound by ensuring Type must be super class of T.
<?> represent and unbounded type because <?> can be replace with any Type.

Questions 4 : What is difference between List<? extends T>  and  List <? super T>  ?
This question is related to bounded and unbounded wildcards in Generics.
Bounded wildcard :  List<? extends T> will accept any List with Type extending T.
And Unbounded wildcard : List<? super T> will accept any List with type super class of T.
Example List<? extends Number> can accept List<Integer> or List<Float>.
Question 6 : What are advantages of using Generics ?
Answer :  Generics provides compile time type-safety and ensures that you only insert correct Type in collection and avoids ClassCastException during runtime
Read full article from Java Collections Tricky Interview Questions And Answers

No comments:

Post a Comment

Labels

Algorithm (219) Lucene (130) LeetCode (97) Database (36) Data Structure (33) text mining (28) Solr (27) java (27) Mathematical Algorithm (26) Difficult Algorithm (25) Logic Thinking (23) Puzzles (23) Bit Algorithms (22) Math (21) List (20) Dynamic Programming (19) Linux (19) Tree (18) Machine Learning (15) EPI (11) Queue (11) Smart Algorithm (11) Operating System (9) Java Basic (8) Recursive Algorithm (8) Stack (8) Eclipse (7) Scala (7) Tika (7) J2EE (6) Monitoring (6) Trie (6) Concurrency (5) Geometry Algorithm (5) Greedy Algorithm (5) Mahout (5) MySQL (5) xpost (5) C (4) Interview (4) Vi (4) regular expression (4) to-do (4) C++ (3) Chrome (3) Divide and Conquer (3) Graph Algorithm (3) Permutation (3) Powershell (3) Random (3) Segment Tree (3) UIMA (3) Union-Find (3) Video (3) Virtualization (3) Windows (3) XML (3) Advanced Data Structure (2) Android (2) Bash (2) Classic Algorithm (2) Debugging (2) Design Pattern (2) Google (2) Hadoop (2) Java Collections (2) Markov Chains (2) Probabilities (2) Shell (2) Site (2) Web Development (2) Workplace (2) angularjs (2) .Net (1) Amazon Interview (1) Android Studio (1) Array (1) Boilerpipe (1) Book Notes (1) ChromeOS (1) Chromebook (1) Codility (1) Desgin (1) Design (1) Divide and Conqure (1) GAE (1) Google Interview (1) Great Stuff (1) Hash (1) High Tech Companies (1) Improving (1) LifeTips (1) Maven (1) Network (1) Performance (1) Programming (1) Resources (1) Sampling (1) Sed (1) Smart Thinking (1) Sort (1) Spark (1) Stanford NLP (1) System Design (1) Trove (1) VIP (1) tools (1)

Popular Posts