Collection Review 1

在5.0中,collection最大的一个改变就是可以指定它的具体类型:
List<String> list=new List<String>;

两个最基本的接口:
public interface Collection<E>
{
   boolean add(E element);
   Iterator<E> iterator();
   . . .
}

public interface Iterator<E>
{
   E next();
   boolean hasNext();
   void remove();
}

在5.0以前,常用的形式就是:
Collection<String> c = . . .;
Iterator<String> iter = c.iterator();
while (iter.hasNext())

   String element = iter.next();
   do something with element
}
但是在5.0中加入另外一种循环方式,类似于for each:
for (String element : c)
{
   do something with element
}
这种方式对任何实现了Iterable接口的类都适用。

在使用remove的时候特别要注意的一点是,在调用remove之前必须先调用一次next方法,因为next

就像是在移动一个指针,remove删掉的就是指针刚刚跳过去的东西。即使是你想连续删掉两个相邻的东

西,也必须在每次删除之前调用next。

对collection排序和查找
Collections类的sort方法可以对任何实现了List接口的类进行排序。在排序过程中,他默认这些类实现了Comparable接口,如果想用其他方法排序,可以在调用sort方法的时候提供一个Comparator对象:
Comparator<Item> itemComparator = new
   Comparator<Item>()
   { 
      public int compare(Item a, Item b)
      { 
         return a.partNumber - b.partNumber;
      }
   });
反向排序:
Collections.sort(items, itemComparator);
Collections.sort(items, Collections.reverseOrder(itemComparator));

查找一个对象:
i = Collections.binarySearch(c, element);
i = Collections.binarySearch(c, element, comparator);
但是这些list必须是已经排好序了。而且要注意的是这个算法需要随机访问collection,如果不支持随机访问那么这个算法的效率可能会很低。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值