栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

您将如何用Java或C#编写高效的循环缓冲区?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

您将如何用Java或C#编写高效的循环缓冲区?

我将使用T数组,首尾指针以及add和get方法。

像:(错误查找留给用户)

// Hijack these for simplicityimport java.nio.BufferOverflowException;import java.nio.BufferUnderflowException;public class CircularBuffer<T> {  private T[] buffer;  private int tail;  private int head;  @SuppressWarnings("unchecked")  public CircularBuffer(int n) {    buffer = (T[]) new Object[n];    tail = 0;    head = 0;  }  public void add(T toAdd) {    if (head != (tail - 1)) {        buffer[head++] = toAdd;    } else {        throw new BufferOverflowException();    }    head = head % buffer.length;  }  public T get() {    T t = null;    int adjTail = tail > head ? tail - buffer.length : tail;    if (adjTail < head) {        t = (T) buffer[tail++];        tail = tail % buffer.length;    } else {        throw new BufferUnderflowException();    }    return t;  }  public String toString() {    return "CircularBuffer(size=" + buffer.length + ", head=" + head + ", tail=" + tail + ")";  }  public static void main(String[] args) {    CircularBuffer<String> b = new CircularBuffer<String>(3);    for (int i = 0; i < 10; i++) {        System.out.println("Start: " + b);        b.add("One");        System.out.println("One: " + b);        b.add("Two");        System.out.println("Two: " + b);        System.out.println("Got '" + b.get() + "', now " + b);        b.add("Three");        System.out.println("Three: " + b);        // Test Overflow        // b.add("Four");        // System.out.println("Four: " + b);        System.out.println("Got '" + b.get() + "', now " + b);        System.out.println("Got '" + b.get() + "', now " + b);        // Test Underflow        // System.out.println("Got '" + b.get() + "', now " + b);        // Back to start, let's shift on one        b.add("Foo");        b.get();    }  }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394116.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号