הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה 89-210 תכנות מתקדם - תרגול 3 Containers ב Java אליהו חלסצ'י תכנות מתקדם 89-210.

Slides:



Advertisements
Similar presentations
Object Oriented 33 MCSD DORON AMIR
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
Interface ממשקים 1. ראינו כי ניתן לשמור אובייקטים במערכים באותו אופן כמו משתנים רגילים. ננסה כעת לראות כיצד למיין מערך של אובייקטים מסוג מסוים. נשתמש.
1 תוכנה 1 תרגול 14 – סיכום. 2 קצת על מנשקים מנשק יכול להרחיב יותר ממנשק אחד שירותים במנשק הם תמיד מופשטים וציבוריים public interface MyInterface { public.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב'
חורף - תשס " ג DBMS, Design1 שימור תלויות אינטואיציה : כל תלות פונקציונלית שהתקיימה בסכמה המקורית מתקיימת גם בסכמה המפורקת. מטרה : כאשר מעדכנים.
מה החומר למבחן ? כל החומר שנלמד בהרצאות ובתרגולים. לגבי backtracking: לא תידרשו לממש אלגוריתם, אך כן להבין או להשלים מימוש נתון. אחת משאלות המבחן מבוססת.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
בהסתברות לפחות למצא בעיה במודל PAC עבור בהסתברות ε הפונקציה f טועה מודל ONLINE 1. אחרי כל טעות הפונקציה משתפרת 2. מספר הטעיות קטן.
תרגול חזרה. מבנה האובייקט תאר את מבנה האובייקט כולל מבנה טבלאות הפונקציות הוירטואליות עבור התכנית הבאה struct A { int x; virtual void a() {}; }; struct.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
חלון הפקודות מיועד לבצע פעולה אחת בכל פעם. כיצד אפשר לבצע רשימת פקודות או אפליקציות מורכבות ?
Algorithm Programming Containers in Java Bar-Ilan University תשס " ו by Moshe Fresko.
What Is a Collection?  A collection (sometimes called a container) is simply an object that groups multiple elements into a single unit.  Collections.
ערמות ; מבני נתונים 09 מבוסס על מצגות של ליאור שפירא, חיים קפלן, דני פלדמן וחברים.
רישום חומרי למידה והסטנדרט הישראלי: ISRACORE יהודית בר אילן, אוניברסיטת בר-אילן אלי שמואלי, מיט"ל.
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
עקרון ההכלה וההדחה.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
Markov Decision Processes (MDP) תומר באום Based on ch. 14 in “Probabilistic Robotics” By Thrun et al. ב"הב"ה.
1 מבוא למדעי המחשב סיבוכיות. 2 סיבוכיות - מוטיבציה סידרת פיבונאצ'י: long fibonacci (int n) { if (n == 1 || n == 2) return 1; else return (fibonacci(n-1)
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
- אמיר רובינשטיין מיונים - Sorting משפט : חסם תחתון על מיון ( המבוסס על השוואות בלבד ) של n מפתחות הינו Ω(nlogn) במקרה הגרוע ובממוצע. ניתן לפעמים.
תוכנה 1 תבנית העיצוב Observer 1 שחר מעוז בית הספר למדעי המחשב אוניברסיטת תל אביב.
Collections. Why collections? Collections are used to hold a collection of objects. List holds objects based on order of insertion and can hold non unique.
SEG4110 – Advanced Software Design and Reengineering TOPIC G Java Collections Framework.
Sets and Maps Part of the Collections Framework. The Set interface A Set is unordered and has no duplicates Operations are exactly those for Collection.
Recitation 1 CS0445 Data Structures Mehmud Abliz.
Sadegh Aliakbary Sharif University of Technology Fall 2010.
1 TCSS 143, Autumn 2004 Lecture Notes Java Collection Framework: Maps and Sets.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
1.0tCopyright © 1998 Purple Technology, Inc. 1 Java Collections Framework Authored by Alex Chaffee Copyright © 1998 Purple Technology, Inc. All rights.
Sets and Maps Chris Nevison. Set Interface Models collection with no repetitions subinterface of Collection –has all collection methods has a subinterface.
The Java Collections Framework Based on
תכנות אסינכרוני, תקשורת ופיתוח אפליקציות ל- Windows 8.1 ואפליקציות ל- Windows Phone 8 Control (Part II)
3-February-2003cse Collections © 2003 University of Washington1 Java Collections CSE 403, Winter 2003 Software Engineering
Java 2 Collections Bartosz Walter Software Engineering II.
 Client, Supplier ומה שביניהם ( ADT!).  שאלה 1: יצירת ADT עבור מעגל במישור נניח שלקוח מעוניין בפעולות הבאות : הזזת מעגל וחישוב שטח מעגל. הספק יספק ללקוח.
1 Collections Framework A collections framework is a unified architecture for representing and manipulating collections. All collections frameworks contain:
SETS AND MAPS Collections of Data. Advanced Data Structures Often referred to as the Java Collections Framework…. Set and map data types Hash tables Binary.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 12. ספריות.
Sets and Maps Part of the Collections Framework. 2 The Set interface A Set is unordered and has no duplicates Operations are exactly those for Collection.
1 תרגול 11: Design Patterns ומחלקות פנימיות אסף זריצקי ומתי שמרת 1 תוכנה 1.
1 נתבונן בפונקציה הבאה public static int min(int[] a,int n) { int min = a[0]; for (int i = 1; (i < n ) && (i < a.length) ; i++) if (min > a[i]) min = a[i];
Combo Box שלושה סוגים של Combo Box: Style 0 (default) - drop-down combo box המשתמש יכול להוסיף אפשרויות לרשימה או ללחוץ על החץ לבחירה מרשימת האפשרויות.
תוכנה 1 בשפת Java תרגול מספר 9: נושאים שונים בהורשה אסף זריצקי ומתי שמרת בית הספר למדעי המחשב אוניברסיטת תל אביב.
עקרונות תכנות מונחה עצמים תרגול 11: OOP in C++. Outline  Where do the objects live ?  Inheritance  Slicing  Overriding vs Shadowing.
Operators Overloading
מבוא למדעי המחשב סיבוכיות.
SQL בסיסי – הגדרה אינדוקטיבית
תירגול 14: מבני נתונים דינאמיים
Containers ב Java אליהו חלסצ'י תכנות מתקדם תרגול מספר 3
פרוקטוז, C6H12O6 , חד-סוכר מיוחד
מבוא ל Maven אליהו חלסצ'י תכנות מתקדם תרגול מספר 3
ממשקים - interfaces איך לאפשר "הורשה מרובה".
Part of the Collections Framework
ניתוח מערכות מידע תכנות ב C#
תכנות מכוון עצמים ושפת JAVA
תוכנה 1 תרגול 13 – סיכום.
מבוא לתכנות ב- Java תרגול 10 - רשימות מקושרות.
פולימורפיזם מתקדם ממשקים בC# עריכה ועיצוב: קרן הרדי
Hashing in java.util
Presentation transcript:

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers ב Java אליהו חלסצ'י תכנות מתקדם תכנות מתקדם תרגול מספר 3 תש"ע

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 כלל חשוב לגבי השיעורים הבאים: לא בזמן התרגול.שאלות על שיעורי הבית – לא בזמן התרגול. ניתן לשאול, כמובן, אחרי.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 הקדמה ב java אין templates. המפתחים החליטו שניתן לתכנת בצורה גנרית גם ללא תמיכה ב templates. במקום, ישנה קבוצה של collections, שיכולה לספק את רוב הצרכים שלנו ב containers. קבוצה זו לא נבנתה לשם יעילות כמו ה STL של C++. בעבר קבוצה זו עבדה עם הטיפוס Object וכך היה ניתן להכניס פנימה כל מופע מכל מחלקה. אך העבודה עם Object מצריכה casting וזה האט את הביצועים, כיום ניתן להגדיר את הטיפוס המוכנס ל container. לא ניתן להכניס primitive types ל containers, משום שדרוש אובייקט, לכן יש את המחלקות העוטפות כדוגמת Integer. כמובן שהדבר צורך יותר זיכרון...

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Comparator נניח שנרצה למיין רשימה, פעם בסדר עולה ופעם בסדר יורד, האם נצטרך לשם כך שני מימושים? התשובה היא לא, אם משתמשים ב Strategy Pattern. ע"פ תבנית זו, אלגוריתם המיון ישתמש בהחלטה מבחוץ כיצד למיין את הרשימה. כדי להשפיע על שיטת המיון ב Containers השונים ב java, משתמשים בתבנית זו באמצעות comparator.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Comparator כל מחלקה יכולה לממש את הממשקים הבאים: ע"פ המימוש באחד מממשקים אלו, ה containers מחליטים כיצד למיין בפנים את העצמים השמורים. interface Comparator { int compare(Object o1, Object o2); } interface Comparable { int compareTo(Object o) ; }

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Comparator דוגמא: public class RV1 implements Robot,Comparable { … private String name; public String getName() { return name; } public int compareTo(Robot arg0) { return name.compareTo(arg0.getName()); } Robot r1=new RV1(); Robot r2=new RV1(); Robot r3=new RV1(); r1.setName("aaabc"); r2.setName("aabc"); r3.setName("abc"); ArrayList ar=new ArrayList (); ar.add(r3); ar.add(r2); ar.add(r1); Collections.sort(ar); for(int i=0;i<ar.size();i++){ System.out.println(ar.get(i).getName()); } פלט: aaabc aabc abc מיון: אופטימיזציה של merge sort מהירה ויציבה: מיון מהיר: - nlog(n) תמיד מובטח (בניגוד ל quick sort) - עובד מהר יותר על רשימות כמעט ממוינות. מיון יציב : - לא ממיינת עצמים שווים. (דוג' דואר שממוין לפי תאריך)

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers שימושיים ב java יש שני סוגים של Containers: –Collections קבוצה של ערכים בודדים List – רשימה: שומר על הערכים ברצף מסוים. Set – קבוצה: אותו הערך לא יכול להופיע יותר מפעם אחת. –Map קבוצה של הזוגות מפתח + ערך לכל אלו מימושים שונים על בסיס הצורות שלמדתם בקורס מבנה נתונים. לכל אחד יתרונות וחסרונות אחרים, ולכן יש להתאים את ה container לדרישות התוכנה.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers שימושיים להלן כמה דוגמאות: List –ArrayList ממומש על בסיס מערך: גישה אקראית מהירה, אך הוספה ומחיקה מהאמצע איטית. –LinkedList ממומש על בסיס רשימה מקושרת דו כיוונית: גישה אקראית איטית, אך הוספה ומחיקה מהאמצע מהירה. Set –HashSet לשימוש כשזמן חיפוש האלמנט חשוב, יש לממש המתודה HashCode() לאובייקט שברצוננו להכניס. –TreeSet ניתן בקלות להוציא רשימה ממוינת. Map –HashMap ממומש באמצעות hash tables, אובייקט המפתח חייב לממש את HashCode() –LinkedHashMap – אותו הדבר, אך שומר גם את סדר ההכנסה. –TreeMap – ממומש ע"י עץ אדום שחור, ניתן לקבל תוצאות ממוינות.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers שימושיים מתודות שימושיות ל Collections: –boolean add(Objetc o) –boolean add(Collection c) –void clear() –boolean contains(Object o) –boolean isEmpty() –Iterator iterator() –boolean remove(Object o) –boolean removeAll(Collection c) –int size() –Object[] toArray()

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Containers שימושיים מתודות שימושיות ל Map: –Object put(Object key, Object value) –void putAll(Map t) –Object get(Object key) –void clear() –boolean containsKey(Object key) –boolean containsValue(Object value) –boolean isEmpty() –Object remove(Object key) –int size() –Set entrySet() –Set keySet() –Collection values()

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Iterator מטרת ה Iterator היא לספק גישה לעצמים ב Container מבלי לחשוף את אופן פעולתו. בממשק (של List לדוג') לא ניתן לספק את כל האופנים השונים בהם נרצה לטייל ב container. ייתכנו כמה iterators עבור אותו ה container כל אחד יטייל בדרך שונה על העצמים.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Iterator דוגמאות: ArrayList ar=new ArrayList (); ar.add(r3); ar.add(r2); ar.add(r1); for(int i=0;i<ar.size();i++){ System.out.println(ar.get(i).getName()); } Iterator it=ar.iterator(); while (it.hasNext()){ System.out.println(it.next().getName()); }

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Iterator דוגמאות: –HashSet –HashMap HashSet hs =new HashSet (); hs.add(r3); hs.add(r2); hs.add(r1); Iterator it=hs.iterator(); while (it.hasNext()){ System.out.println(it.next().getName()); } String key; HashMap hm=new HashMap (); hm.put(r3.getName(), r3); hm.put(r2.getName(), r2); hm.put(r1.getName(), r1); Iterator it=hm.keySet().iterator(); while (it.hasNext()){ key=it.next(); System.out.println(hm.get(key).getName()); }

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Factory Pattern בעיה: נניח שיש לנו n סוגים של אובייקטים ולכל אחד שם, אופן פעולת התוכנית צריך להיות כך שהמשתמש בכל פעם בוחר שם והאובייקט הרצוי נוצר. לכאורה, במקרה הגרוע צריך n השוואות כדי לדעת באיזה שם המשתמש בחר, וע"פ השם הזה ליצור את האובייקט הרצוי.  O(n) דרך טובה יותר לפתור את הבעיה, היא להשתמש ב Factory Pattern, יש הרבה דרכים למימוש, נראה דוגמא לדרך אחת.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Factory Pattern import java.util.HashMap; public class RobotFactory { private interface RobotFac{ public Robot create(); } private class RV1Fac implements RobotFac{ public Robot create(){ return new RV1();} } private class RV2Fac implements RobotFac{ public Robot create(){ return new RV2();} } private class AiboFac implements RobotFac{ public Robot create(){ return new Aibo();} } private HashMap robotFactory; public RobotFactory(){ robotFactory=new HashMap (); robotFactory.put("RV1", new RV1Fac()); robotFactory.put("RV2", new RV2Fac()); robotFactory.put("Aibo", new AiboFac()); } public Robot createRobot(String type){ return ((RobotFac)robotFactory.get(type)).create(); } 1.ניצור ממשק עם הפקודה create.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Factory Pattern import java.util.HashMap; public class RobotFactory { private interface RobotFac{ public Robot create(); } private class RV1Fac implements RobotFac{ public Robot create(){ return new RV1();} } private class RV2Fac implements RobotFac{ public Robot create(){ return new RV2();} } private class AiboFac implements RobotFac{ public Robot create(){ return new Aibo();} } private HashMap robotFactory; public RobotFactory(){ robotFactory=new HashMap (); robotFactory.put("RV1", new RV1Fac()); robotFactory.put("RV2", new RV2Fac()); robotFactory.put("Aibo", new AiboFac()); } public Robot createRobot(String type){ return (robotFactory.get(type).create(); } 1.ניצור ממשק עם הפקודה create. 2.נממש את הממשק ע"י מחלקות עבור כל אחד מסוגי האובייקטים הרצויים.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 private HashMap robotFactory; public RobotFactory(){ robotFactory=new HashMap (); robotFactory.put("RV1", new RV1Fac()); robotFactory.put("RV2", new RV2Fac()); robotFactory.put("Aibo", new AiboFac()); } public Robot createRobot(String type){ return (robotFactory.get(type).create(); } Factory Pattern import java.util.HashMap; public class RobotFactory { private interface RobotFac{ public Robot create(); } private class RV1Fac implements RobotFac{ public Robot create(){ return new RV1();} } private class RV2Fac implements RobotFac{ public Robot create(){ return new RV2();} } private class AiboFac implements RobotFac{ public Robot create(){ return new Aibo();} } 1.ניצור ממשק עם הפקודה create. 2.נממש את הממשק ע"י מחלקות עבור כל אחד מסוגי האובייקטים הרצויים. 3.ניצור HashMap עבור המחלקות הנ"ל, כשהמפתח הוא השם דרכו המשתמש בוחר ליצור את האובייקט הרצוי.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 private HashMap robotFactory; public RobotFactory(){ robotFactory=new HashMap (); robotFactory.put("RV1", new RV1Fac()); robotFactory.put("RV2", new RV2Fac()); robotFactory.put("Aibo", new AiboFac()); } public Robot createRobot(String type){ return (robotFactory.get(type).create(); } Factory Pattern import java.util.HashMap; public class RobotFactory { private interface RobotFac{ public Robot create(); } private class RV1Fac implements RobotFac{ public Robot create(){ return new RV1();} } private class RV2Fac implements RobotFac{ public Robot create(){ return new RV2();} } private class AiboFac implements RobotFac{ public Robot create(){ return new Aibo();} } 1.ניצור ממשק עם הפקודה create. 2.נממש את הממשק ע"י מחלקות עבור כל אחד מסוגי האובייקטים הרצויים. 3.ניצור HashMap עבור המחלקות הנ"ל, כשהמפתח הוא השם דרכו המשתמש בוחר ליצור את האובייקט הרצוי. 4.נכניס את הזוגות String, RobotFac>> ל Hashmap

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 private HashMap robotFactory; public RobotFactory(){ robotFactory=new HashMap (); robotFactory.put("RV1", new RV1Fac()); robotFactory.put("RV2", new RV2Fac()); robotFactory.put("Aibo", new AiboFac()); } public Robot createRobot(String type){ return (robotFactory.get(type).create(); } Factory Pattern import java.util.HashMap; public class RobotFactory { private interface RobotFac{ public Robot create(); } private class RV1Fac implements RobotFac{ public Robot create(){ return new RV1();} } private class RV2Fac implements RobotFac{ public Robot create(){ return new RV2();} } private class AiboFac implements RobotFac{ public Robot create(){ return new Aibo();} } 1.ניצור ממשק עם הפקודה create. 2.נממש את הממשק ע"י מחלקות עבור כל אחד מסוגי האובייקטים הרצויים. 3.ניצור HashMap עבור המחלקות הנ"ל, כשהמפתח הוא השם דרכו המשתמש בוחר ליצור את האובייקט הרצוי. 4.נכניס את הזוגות String, RobotFac>> ל Hashmap 5.פקודת יצירת האובייקט: בהינתן מחרוזת שהמשתמש בחר, ניגש בזמן של O(1) ל HashMap אל האובייקט השמור תחת אותה המחרוזת כמפתח נקרא ל create ונקבל את האובייקט הרצוי. החלפנו O(n) זמן ב O(n) מקום, וקיבלנו זמן של O(1) ליצירת אובייקטים + נוחות לתחזק ולהוסיף בעתיד או אובייקטים ל Factory.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Trove העובדה ש containers מקבלים אובייקט מצריכה אותנו לבזבז זיכרון בעקבות השימוש במחלקות העוטפות, במקרה שאנו רוצים להשתמש רק ב primitive types. הקבוצה GNU Trove יצרה Collections חדשים שמקבלים primitive types ובכך חוסכות זיכרון, וכן משפרת משמעותית את הביצועים. באתר הקורס פרטים על הורדה + הדרך להוסיף jars לפרויקט באמצעות ה eclipse.

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 Trove קוד לדוגמא: import gnu.trove.*; public class HelloWorldApp { static TByteFloatHashMap hm=new TByteFloatHashMap(); public static void main(String[] args) { float lastValueForThisKey; byte key1=1,key2=2,key3=3; hm.put(key1, (float) 0.2); lastValueForThisKey=hm.put(key1, (float) 0.1); System.out.println("last value for key1 was "+lastValueForThisKey); hm.put(key2, (float) 0.2); hm.put(key3, (float) 0.3); TByteFloatIterator it= hm.iterator(); while (it.hasNext()){ it.advance(); System.out.println("key: "+it.key()+", value: "+ it.value()); } פלט: last value for key1 was 0.2 key: 2, value: 0.2 key: 1, value: 0.1 key: 3, value: 0.3

הקדמה Comparator Containers שימושיים Iterator Factory Pattern Trove הטמעה תכנות מתקדם - תרגול 3 הטמעה מנה 2 חסרונות של ה containers ב java לעומת C++ STL באיזה אלגוריתם מיון משתמש Collections.sort() ומדוע? בדקו האם המתודה boolean contains(Object o) מחזירה "אמת" לפי תוכן האובייקט או לפי מיקומו בזיכרון. כנסו לאתר Sun ותכירו עוד containers כגון PriorityQueue, Hashtable צרו collection כלשהו עבור int באמצעות trove ותעברו עליו באמצעות iterator.