2009-12-07 3 views
1

Blackberry 응용 프로그램에서 Java의 Queue.peek() 및 Queue.remove()와 비슷한 메서드를 제거하고 제거하려고합니다. 사용자 정의 대기열 구현이 있지만 요소를 살짝보고 대기열에서 요소를 제거하려면 어떻게해야합니까?Blackberry의 큐 구현을위한 Peek() 및 remove() 메서드

도와주세요, 사전에

감사합니다.

답변

4

봅니다 Arrays 클래스를 사용합니다 ... 당신이 들여다해야하는 경우, 단지 마지막 삭제 제거, 개체 배열에서 마지막 요소를 가지고 :

class Queue { 
    private Object[] mElements = new Object[] {}; 

    public void enqueue(Object element) { 
     Arrays.insertAt(mElements, element, 0); 
    } 

    public Object dequeue() { 
     Object result = null; 
     if (null != mElements && 0 < mElements.length) { 
      result = mElements[mElements.length - 1]; 
      Arrays.remove(mElements, result); 
     } 
     return result; 
    } 

    public Object peek() { 
     if (null != mElements && 0 < mElements.length) 
      return mElements[mElements.length - 1]; 
     else 
      return null; 
    } 

    public void remove() { 
     if (null != mElements && 0 < mElements.length) 
      Arrays.remove(mElements, peek()); 
    } 
} 

사용 예 :

class Scr extends MainScreen { 
    public Scr() { 
     Queue queue = new Queue(); 
     queue.enqueue(new String("3"));   
     queue.enqueue(new Boolean(true)); 
     queue.enqueue(new Integer(1));  
     //see "3" in console 
     System.out.println(queue.peek()); 
     //see "3" still there 
     System.out.println(queue.peek()); 
     //remove "3" 
     queue.remove(); 
     //see "true" in console 
     System.out.println(queue.peek());  
     //dequeue all elements 
     Object element = null; 
     while ((element = queue.dequeue()) != null) { 
      System.out.println(element.toString()); 
     } 
    } 
} 
+0

감사합니다. Coldice, 저를 도왔습니다. – iOSDev

+0

당신을 진심으로 환영합니다! –

+0

'Arrays.remove'는 OS 4.0 이후 문서화되지 않았고 이유가 있습니다 : 일부 버전에서는 작동하지 않습니다. –

3

당신을 이러한 유형의 작업을 수행하려면 Vector을 사용할 수 있어야합니다. firstElement()은 목록의 첫 번째 부분을 들여다보고 lastElement()은 마지막 부분을 들여다 보며, elementAt()은 그 사이를 살펴볼 수 있습니다. 그런 다음 removeElementAt()을 사용하여 요소를 제거하십시오.

+0

답변을 주신 Marc에게 감사드립니다. – iOSDev