Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除一个关键点的所有引用只会删除一个关键点_Java - Fatal编程技术网

Java 删除一个关键点的所有引用只会删除一个关键点

Java 删除一个关键点的所有引用只会删除一个关键点,java,Java,我有以下资料: ArrayList<GregorianCalendar> toRemove = new ArrayList<GregorianCalendar>(); SortedSet<GregorianCalendar> copyKeys = new TreeSet<GregorianCalendar>(MyCalendarTester.myCal.getMyCalHash().keySet());

我有以下资料:

        ArrayList<GregorianCalendar> toRemove = new ArrayList<GregorianCalendar>();
SortedSet<GregorianCalendar> copyKeys =  new TreeSet<GregorianCalendar>(MyCalendarTester.myCal.getMyCalHash().keySet());
                        for(GregorianCalendar remove: toRemove){
                                    copyKeys.removeAll(Collections.singleton(remove));

                        }
ArrayList toRemove=new ArrayList();
SortedSet copyKeys=新树集(MyCalendarTester.myCal.getMyCalHash().keySet());
用于(GregorianCalendar删除:删除){
copyKeys.removeAll(Collections.singleton(remove));
}
我正在尝试删除我的树集copyKeys中出现的每一个键“remove”。但它似乎只移除了其中一个。有人能告诉我我做错了什么吗?如果你需要更多信息,请告诉我

编辑: 为了它,这里是我的整个混乱的方法(我知道它还有一些问题,只是我要问的问题),但这里是这样的:

    public void eventList(){

        int year = -1;
        GregorianCalendar tempKey = null;
        ArrayList<Event> tempArr = new ArrayList<Event>();
        ArrayList<GregorianCalendar> toRemove = new ArrayList<GregorianCalendar>();
        int countEnd = 0;

        if(MyCalendarTester.myCal.getMyCalHash().equals(null)){
            System.out.println("Your calendar is empty!");
        }
        else{
            System.out.println("Here are your events: ");
            SortedSet<GregorianCalendar> keys = new TreeSet<GregorianCalendar>(MyCalendarTester.myCal.getMyCalHash().keySet());
            SortedSet<GregorianCalendar> copyKeys =  new TreeSet<GregorianCalendar>(MyCalendarTester.myCal.getMyCalHash().keySet());
            tempKey = keys.first();
            int countTotal = keys.size();
            for(GregorianCalendar key : copyKeys){
                GregorianCalendar copyKey = key;
                Event value = MyCalendarTester.myCal.getMyCalHash().get(key);
//              System.out.println(" key.get(Calendar.MONTH) = " + key.get(Calendar.MONTH));
//              System.out.println("(tempKey.get(Calendar.MONTH)) = " + (tempKey.get(Calendar.MONTH)));
//              System.out.println(" key.get(Calendar.DATE) = " + key.get(Calendar.DATE));
//              System.out.println(" tempKey.get(Calendar.DATE) = " + (tempKey.get(Calendar.DATE)));
                tempArr.add(value);
                countEnd++;
                if(key.get(Calendar.MONTH) == (tempKey.get(Calendar.MONTH))
                        && key.get(Calendar.DATE) == (tempKey.get(Calendar.DATE))
                        && key.get(Calendar.YEAR) == tempKey.get(Calendar.YEAR)){

                        //  tempArr.add(value);
                            if(key.get(Calendar.YEAR) != year){
                                System.out.println(key.get(Calendar.YEAR));
                                year = key.get(Calendar.YEAR);

                                    System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY_OF_WEEK) - 1] + ", " + MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH) - 1] + " "
                                            + key.get(Calendar.DATE) + " ");

                            }

                            toRemove.add(copyKey);
//                          toRemove.add(copyKey);
                            //keys.remove(copyKey);

                }else{
                    //if(count <= 1){
                        //if(tempArr.size() == 1){
                    if(countEnd == countTotal){
                        tempArr.remove(tempArr.size() - 1); 
                    }else{
                        if(tempArr.size() > 1){
                            tempArr.remove(tempArr.size() - 2); 
                        }else{
                            tempArr.remove(tempArr.size() - 1); 
                        }

                        if(toRemove.size() > 0){
                            toRemove.remove(toRemove.size() - 1);
                        }
                    }
                    //  }
//                      else{
//                          tempArr.remove(tempArr.size() - 2); 
//                          toRemove.remove(toRemove.size() - 1);
//                      }
//                      
                    //  count = 0; //reset matches
                    //}

                }
                tempKey = key;


            }
                Collections.sort(tempArr);
                for(Event e: tempArr){

                            if(e.endTime != null){

                                System.out.println("    " + e.eventName + " " + e.startTime.get(Calendar.HOUR_OF_DAY) + ":" + 
                                e.startTime.get(Calendar.MINUTE) + " " + e.endTime.get(Calendar.HOUR_OF_DAY) 
                                + ":" + e.endTime.get(Calendar.MINUTE));
                                //tempKey = key;
                            //  year = key.get(Calendar.YEAR); 
                                //keys.remove(key);
                            }
                            else{
                                System.out.println("    " + e.eventName + " " + e.startTime.get(Calendar.HOUR_OF_DAY) + ":" + 
                                        e.startTime.get(Calendar.MINUTE));
                            //  tempKey = key;
                            //  year = key.get(Calendar.YEAR); 
                                //keys.remove(key);
                            }
                }
                        tempArr.clear();
                        //break;


                        for(GregorianCalendar remove: toRemove){
                                    copyKeys.removeAll(Collections.singleton(remove));

                        }


                for(GregorianCalendar key : copyKeys){
                        Event value = MyCalendarTester.myCal.getMyCalHash().get(key);

                    if(tempArr.size() == 0){
                    if(value.endTime != null){
                        if(key.get(Calendar.YEAR) == year){

                            System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY_OF_WEEK) - 1] + ", " + MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH) - 1] + " "
                                    + key.get(Calendar.DATE) + " " + value.startTime.get(Calendar.HOUR_OF_DAY) + ":" + value.startTime.get(Calendar.MINUTE) + " - " + value.endTime.get(Calendar.HOUR_OF_DAY) 
                                    + ":" + value.endTime.get(Calendar.MINUTE) + " " + value.eventName);
                        //  tempKey = key;

                        }else{
                            System.out.println(key.get(Calendar.YEAR));
                            System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY_OF_WEEK) - 1] + ", " + MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH) - 1] + " "
                                    + key.get(Calendar.DATE) + " " + value.startTime.get(Calendar.HOUR_OF_DAY) + ":" + value.startTime.get(Calendar.MINUTE) + " - " + value.endTime.get(Calendar.HOUR_OF_DAY) 
                                    + ":" + value.endTime.get(Calendar.MINUTE) + " " + value.eventName );
                            year = key.get(Calendar.YEAR);
                            tempKey = key;
                        }

                    }else{
                        if(key.get(Calendar.YEAR) == year){
                            System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY_OF_WEEK) - 1] + ", " + MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH) - 1] + " "
                                    + key.get(Calendar.DATE) + " " + value.startTime.get(Calendar.HOUR_OF_DAY) + ":" + value.startTime.get(Calendar.MINUTE) + " " + value.eventName);
                            tempKey = key;

                        }else{
                            System.out.println(key.get(Calendar.YEAR));
                            System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY_OF_WEEK) - 1] + ", " + MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH) - 1] + " "
                                    + key.get(Calendar.DATE) + " " + value.startTime.get(Calendar.HOUR_OF_DAY) + ":" + value.startTime.get(Calendar.MINUTE)  + " " + value.eventName);
                            System.out.println();
                            year = key.get(Calendar.YEAR);
                            tempKey = key;
                        }
                    }
                    }


                }

        }

    }
public void eventList(){
整年=-1;
GregorianCalendar tempKey=null;
ArrayList tempArr=新的ArrayList();
ArrayList toRemove=新建ArrayList();
int countEnd=0;
if(MyCalendarTester.myCal.getMyCalHash().equals(null)){
System.out.println(“您的日历是空的!”);
}
否则{
System.out.println(“这是您的事件:”);
SortedSet keys=新树集(MyCalendarTester.myCal.getMyCalHash().keySet());
SortedSet copyKeys=新树集(MyCalendarTester.myCal.getMyCalHash().keySet());
tempKey=keys.first();
int countTotal=keys.size();
用于(GregorianCalendar键:复制键){
GregorianCalendar copyKey=密钥;
事件值=MyCalendarTester.myCal.getMyCalHash().get(键);
//System.out.println(“key.get(Calendar.MONTH)=”+key.get(Calendar.MONTH));
//System.out.println(“(tempKey.get(Calendar.MONTH))=”+(tempKey.get(Calendar.MONTH));
//System.out.println(“key.get(Calendar.DATE)=”+key.get(Calendar.DATE));
//System.out.println(“tempKey.get(Calendar.DATE)=”+(tempKey.get(Calendar.DATE));
临时增加(价值);
countEnd++;
if(key.get(Calendar.MONTH)=(tempKey.get(Calendar.MONTH))
&&key.get(Calendar.DATE)=(tempKey.get(Calendar.DATE))
&&key.get(Calendar.YEAR)==tempKey.get(Calendar.YEAR)){
//临时增加(价值);
if(key.get(日历年)!=年){
System.out.println(key.get(Calendar.YEAR));
年份=key.get(日历年);
System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY\u OF u WEEK)-1]+,“+MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH)-1]+”
+key.get(Calendar.DATE)+“”;
}
删除。添加(复制键);
//删除。添加(复制键);
//键。移除(复制键);
}否则{
//如果(计数1){
tempArr.remove(tempArr.size()-2);
}否则{
tempArr.remove(tempArr.size()-1);
}
如果(toRemove.size()>0){
toRemove.remove(toRemove.size()-1);
}
}
//  }
//否则{
//tempArr.remove(tempArr.size()-2);
//toRemove.remove(toRemove.size()-1);
//                      }
//                      
//计数=0;//重置匹配项
//}
}
tempKey=key;
}
集合。排序(tempArr);
对于(事件e:节拍){
如果(e.endTime!=null){
System.out.println(“+e.eventName+”+e.startTime.get(Calendar.HOUR\u OF u DAY)+“:”+
e、 startTime.get(Calendar.MINUTE)+“+e.endTime.get(Calendar.HOUR\u OF\u DAY)
+“:”+e.endTime.get(Calendar.MINUTE));
//tempKey=key;
//年份=key.get(日历年);
//键。移除(键);
}
否则{
System.out.println(“+e.eventName+”+e.startTime.get(Calendar.HOUR\u OF u DAY)+“:”+
e、 startTime.get(Calendar.MINUTE));
//tempKey=key;
//年份=key.get(日历年);
//键。移除(键);
}
}
tempArr.clear();
//中断;
用于(GregorianCalendar删除:删除){
copyKeys.removeAll(Collections.singleton(remove));
}
用于(GregorianCalendar键:复制键){
事件值=MyCalendarTester.myCal.getMyCalHash().get(键);
if(tempArr.size()==0){
如果(value.endTime!=null){
if(key.get(Calendar.YEAR)=年){
System.out.println(MyCalendarTester.arrayOfDays[key.get(Calendar.DAY\u OF u WEEK)-1]+,“+MyCalendarTester.arrayOfMonths[key.get(Calendar.MONTH)-1]+”
+key.get(Calendar.DATE)+“”+value.startTime.get(Calendar.HOUR\u OF u DAY)+“:“+value.startTime.get(Calendar.MINUTE)+“-”+value.endTime.get(Calendar.HOUR\u OF u DAY)
+“:”+value.endTime.get(Calendar.MINUTE)+“+value.eventName);
//