פורסם 2004 במאי 1121 שנים היי. יש לי 2 רשימות מקושרות שנניח מכילות אובייקטים של חריגות. ואני רוצה לקבל את כל מה שנמצא ברשימה הראשונה אבל לא בשנייה. אז רציתי להשתמש ב removeAll שזה בעצם עושה את העבודה. רק ש LinkedList לא מממשת את removeAll. מה אני כן יכולה לעשות? :-\תודה רבה מראש
פורסם 2004 במאי 1121 שנים לא הבנתי מה הבעיהאם יש לך 2 רשימות ואתה רוצה לקבל רק אחת אז תקח רק אחת. מה השניה מעניינת אותך?
פורסם 2004 במאי 1121 שנים מחבר לא הבנת.מה שאני רוצה זה לקבל את הרשימה הראשונה מינוס האלמנטים שקיימים ברשימה השנייה.למשל:רשימה 1: {"a", "b", "c"}רשימה 2: {"d", "e", "a"}אז רשימה 1 עכשיו צריכה להיות: {"b", "c"}ו removeAll עושה את זה.בכל מקרה, הבעייה שלי היא להשתמש ב removeAll כש LinkedList לא מממשת את הפונקציה הזאת. מי שכן מממש זה קלאסים שהיא יורשת מהם.
פורסם 2004 במאי 1121 שנים אני לא רואה סיבה למה לא להשתמש ב-removeAll שנורש מ-AbstructCollection אבל אם אתה מתעקש ans = new LickedList(a); // ans = a-b; for (int j = 0; j < ans.size(); j++) { if (b.contains(EntryList.get(j))) { ans.remove(j--); } }
פורסם 2004 במאי 1121 שנים מחבר אין לי שום בעייה להשתמש ב-removeAll שנורש מ-AbstructCollection .... אם הייתי יודעת איך.אתה כנראה לא מבין מה הבעייה כי לך זה ברור מאליו. אני חדשה לג'אווה ואני פשוט לא מבינה את כל העניין הזה. למה בכלל יש לי את האפשרות להשתמש ב removeAll שיש ב LinkedList אם היא לא ממומשת??? הרי זה יזרוק לי UnsupportedOperationException.אז נגיד יש לי דבר כזה:LinkedList ls1= new LinkedList();LinkedList ls2= new LinkedList();ונניח שמילאתי אותן באובייקטים...ועכשיו אני רוצה לעשות:ls1.removeAll(ls2);זה יזרוק לי UnsupportedOperationExceptionאז מה אני עושה? :'(ובאמת תודה שאתה מנסה לעזור.
פורסם 2004 במאי 1121 שנים פה עובד יופי removeAll ולא זורק שום Exceptionהרעיון ב-Java שכל מחלקה (Class) יכול (וחייב) לרשת ממחלקה אחרת (אם את לא מגדירה כלום היא יורשת מהמחלקה Object)יחד עם הירושה היא מקבל את כל הפונקציות והמשתנים שהם מסוג public. לכן מחלקה שיורשת ממחלקה אחרת יכולה להריץ את הפונקציות של המחלקה האחרת.במקרה שלנו LinkedList יורש מימישהו שיורש ממישהו שיורש מימשהו ומישהו באמצע מממש את removeAll. אז אין שום בעיה וקרוא לפונקציה הנ"ל.
פורסם 2004 במאי 1121 שנים מחבר אני כנראה סתומה לגמרי כי או שאני לא מבינה אותך או שאני לא עושה משהו טוב. כמו שאמרתי, ביצעתי את הקוד ההוא, ובזמן ריצה, זה תמיד זורק לי UnsupportedOperationException. שוב: LinkedList ls1= new LinkedList(); LinkedList ls2= new LinkedList(); ls1.add("a"); ls1.add("b"); ls1.add("c"); ls1.add("d"); ls2.add("c"); ls2.add("e"); ls1.removeAll(ls2); // UnsupportedOperationException פה התוכנית עוצרת לי עם לפי מה שקראתי איפשהו, LinkedList לא מממשת (אמנם יורשת, אבל לא מממשת) את removeAll. ובגלל זה נזרקת החריגה הזאת. אז אתה אומר שהיא כן מממשת וכן אפשרי? אז למה אצלי זה לא עובד? אגב הנה משהו שכתוב באיזה מדריך לג'אווה: Youll discover that only a portion of the Collection and List interfaces are actually implemented. The rest of the methods cause the unwelcome appearance of something called an UnsupportedOperationException. The Collection interfaceas well as some of the other interfaces in the Java containers librarycontain optional methods, which might or might not be supported in the concrete class that implements that interface. Calling an unsupported method causes an UnsupportedOperationException to indicate a programming error
פורסם 2004 במאי 1121 שנים פה הקוד הזה עובד יופיעל איזה סיבבה את עובדת?אני עובד על JVM J2SE 1.4.2 בסביבת Borland JBuilder X Foundation
פורסם 2004 במאי 1121 שנים מחבר אז אתה אומר שזה עובד אצלך? הממ... אוקיי. טוב לדעת.אני עובדת עם Microsoft Visual J# .NET אמורה להיות עם זה בעייה? :-[
פורסם 2004 במאי 1121 שנים כנראה שזה גירסה ישנה יותרלא תהיה לך ברירה אלה להשתמש בקוד שנתתי לך ans = new LickedList(a); // ans = a-b; for (int j = 0; j < ans.size(); j++) { if (b.contains(EntryList.get(j))) { ans.remove(j--); } }
פורסם 2004 במאי 1121 שנים מחבר סבבה. תודה רבה אני לפחות יותר רגועה כשאני יודעת שזה כן אמור לעבוד רק בסביבת עבודה אחרת.
פורסם 2004 במאי 1221 שנים מחבר יש לי שאלה אחרת עכשיו.במידה ומישהו יוכל לענות לי עד היום בשעה 15:30 אני אודה לו מאוד.נניח שמה שאני מכניסה לרשימות זה אובייקטים של חריגות.דוגמא:LinkedList ExList = new LinkedList();LinkedList ExList2 = new LinkedList();Exception a = new ClassNotFoundException();Exception b = new ArrayIndexOutOfBoundsException("b");Exception c = new ClassNotFoundException("c");Exception d = new ArrayStoreException("a");Exception e = new ClassNotFoundException();Exception f = new UnsupportedOperationException("f");Exception g = new NullPointerException("g");ExList.add(a);ExList.add(b);ExList.add(b);ExList.add(d);ExList2.add(e);ExList2.add(f);ExList2.add(g);if(ExList.remove(ExList2.get(0))); // false???{ System.out.println("printing after removing ExList:"); System.out.println(ExList);}משום מה זה לא נכנס לי לתנאי. אבל זה כן אמור להכנס. הרי a שווה ל e לא?אז ה remove אמור להוציא לי את האובייקט הזה מהרשימה הראשונה. וזה לא ככה. מישהו יכול להסביר לי למה?שוב תודה וסליחה על כל ההצקות .
פורסם 2004 במאי 1221 שנים מחבר LOL. זו סתם טעות הקלדה שלי כששמתי את זה פה.בתוכנית זה היה בלי הנקודה פסיק. הרי זה היה נותן לי טעות קומפילציה אם זה היה ככה.זו לא הבעייה.
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.