有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!


共 (4) 个答案

  1. # 1 楼答案

    重写TreeSet并为URL创建一个Proxy,它还存储访问的时间。 然后创建一个Comparator或实现Comparable并覆盖equalshashCode

    对于重写TreeSetthis可以帮助您

    您需要重写add方法。因为您可能不需要addAll,所以可以抛出一个UnsupportedOperationException

    在这之后,您应该会很好,您甚至可以做一些事情,比如每次访问时都会存储重访的URL(这意味着指向同一URL的不同代理URL)每个URL只存储一个条目。这取决于如何定义equals(以及相应的hashCode,分别是compare) 方法

    小心TreeSet使用compare方法进行相等检查,使用相等方法

  2. # 2 楼答案

    你需要一个循环缓冲区

    只需保留一个大小为N、索引为k的数组b[],它指向最早的URL。每次需要添加新URL时,将其分配给b[k]并增加k,如果需要,将其包装:k=(k+1)%N

    所有的URL都会被自然排序,最早的在k,第二个在k+1,依此类推,最新的在k-1。(序列在数组末尾换行)

  3. # 4 楼答案

    在java中有几种Queue的实现。继承或扭曲现有实现并像这样实现add()方法应该很简单:

    boolean add(E e) {
      if(q.size()==MAX_SIZE) {
        remove();
      }
      q.add(e)
    }