下面这个程序我分别用list,queue来删除元素,并且用isEmpty方法,但是set中不支持remove方法,只好和跌代器了。是真的set中没有remove方法吗?
import java.util.*;
public class Test
{
public static void main(String[] args)
{
Queue<GregorianCalendar> list = new PriorityQueue<GregorianCalendar>();
list.add(new GregorianCalendar(1999, Calendar.DECEMBER, 9));
list.add(new GregorianCalendar(2000, Calendar.APRIL, 10));
list.add(new GregorianCalendar(1900, Calendar.MARCH, 3));
list.add(new GregorianCalendar(1995, Calendar.MAY, 12));
while( !list.isEmpty())
{
System.out.println(list.remove().get(Calendar.YEAR));
}
System.out.println();
List<GregorianCalendar> list_1 = new ArrayList<GregorianCalendar>();
list_1.add(new GregorianCalendar(1999, Calendar.DECEMBER, 9));
list_1.add(new GregorianCalendar(2000, Calendar.APRIL, 10));
list_1.add(new GregorianCalendar(1900, Calendar.MARCH, 3));
list_1.add(new GregorianCalendar(1995, Calendar.MAY, 12));
while( !list_1.isEmpty())
{
System.out.println(list_1.remove(0).get(Calendar.YEAR));
}
System.out.println();
Set<GregorianCalendar> list_2 = new TreeSet<GregorianCalendar>();
list_2.add(new GregorianCalendar(1999, Calendar.DECEMBER, 9));
list_2.add(new GregorianCalendar(2000, Calendar.APRIL, 10));
list_2.add(new GregorianCalendar(1900, Calendar.MARCH, 3));
list_2.add(new GregorianCalendar(1995, Calendar.MAY, 12));
Iterator<GregorianCalendar> it = list_2.iterator();
while(it.hasNext())
{
System.out.println(it.next().get(Calendar.YEAR));
it.remove();
}
// //如果一定要用isEmpty()方法怎样做到删除,
// while( !list_2.isEmpty())
// {
//
// System.out.println(list_2.remove().get(Calendar.YEAR));
// }
}
}
------解决方案--------------------
remove
boolean remove(Object o)如果 set 中存在指定的元素,则将其移除(可选操作)。更确切地讲,如果此 set 中包含满足 (o==null ? e==null : o.equals(e)) 的元素 e,则移除它。如果此 set 包含指定的元素(或者此 set 由于调用而发生更改),则返回 true(一旦调用返回,则此 set 不再包含指定的元素)。
指定者:
接口 Collection<E> 中的 remove
参数:
o - 从 set 中移除的对象(如果存在)
返回:
如果此 set 包含指定的对象,则返回 true
抛出:
ClassCastException - 如果指定元素的类型与此 set 不兼容(可选)
NullPointerException - 如果指定的元素为 null,并且此 set 不允许 null 元素(可选)
UnsupportedOperationException - 如果此 set 不支持 remove 操作
------解决方案--------------------
楼上的就是API,楼主参看
------解决方案--------------------
谁告诉你set不支持remove的?拉他出去切JJ
------解决方案--------------------
Set<String> set = new HashSet<String>();
set.add("a");
set.add("b");
set.add("c");
set.add("d");
System.out.println(set);
set.remove("c");
System.out.println(set);
------解决方案--------------------
为什么不能成功?
------解决方案--------------------
set如果不涉及到 hash算法,肯定是可以删除的,楼主关于有没有方法,看api不就 o了?
另外,一般对应hash算法的集合,如果修改hash值,那就移除不了了.