2015-01-21 2 views
0

내 메서드는 시작 문자열과 끝 문자열을 제외하고 내 ArrayList의 2 개 문자열 사이에있는 모든 문자열을 출력합니다.주어진 범위의 arraylist에서 문자열을 출력합니다. java?

public void printRange(String beg, String end) 
{ 
    for(int i = 0; i < list.size(); i++) 
    { 

    } 
} 

문자열 beg는 시작 문자열이고 문자열 끝은 마지막 문자열입니다. 더 이상 정리하기 위해 "dog" "cat" "apple" "banana" "turtle"이라는 단어가 들어있는 ArrayList가 있고 "cat"과 "turtle"에 입력하면 메서드는 "apple"을 출력하고 "바나나".

나는 목록을 반복해야한다는 것을 알고 있지만 거기에서 어디로 가는지에 관해서는 분실했다.

편집 : 2 질문 게시 : 죄송합니다. 다음에 다르게 제출할 것입니다.

+2

. * - 실제로 두 개의 질문이기 때문에 별도의 질문을 게시주세요 .. – TheLostMind

+0

이 질문 오프 주제로 표시 . –

+0

@AlexisKing - 두 가지 질문이 포함되어있어이 질문을 닫지 않는 것으로 생각합니다. 나는 그가 2 개의 분리 된 질문을 올리면 대답이 얻는 것이 쉬울 것이라고 지적했다. – TheLostMind

답변

0

나는 두 번째 질문을 편집 할 것입니다. 한 주제에 대해 두 가지 질문을 게시하지 마십시오.

첫 번째 질문에 대해서는 첫 번째 문자열과 마지막 문자열이있는 위치의 색인을 얻고 싶습니다. 다음과 같은 내용 :

public void printRange(String beg, String end) 
{ 
    int begIdx, endIdx; 
    for(int i = 0; i < list.size(); i++) 
    { 
     if (list[i].equals(beg)) { 
      begIdx = i; 
     } 
     if (list[i].equals(end)) { 
      endIdx = i; 
     } 
    } 

    for(int i = begIdx; i < endIdx; i++) 
     // Print range... 
} 

빠르고 간단하게 구현할 수 있습니다. 목록을 한 번 탐색 할 때이 작업을 수행 할 수 있습니다.

0

나는 작은 상태 머신 사용하십시오 -

  • 상태를 0 = 발견되지부터
  • 상태 1 = 시작, 끝이없는 발견
  • 2 = 끝이 발견 (또는 다시 갈 수 상태 당신이

당신은 상태를 변경 만이 상태에있을 때 물건을 인쇄해야 할 관련 검사 필요) 처음부터 다시 찾고 싶을 경우 0 1.

이 방법을 사용하면 시작 부분과 끝 부분을 찾은 다음 부분적으로 다시 찾아가 필요한 필드를 출력하는 대신 목록을 한 번만 살펴 봐야합니다.

2

N 회 반복하지 않으려면 플래그를 사용해보십시오.

public void printRange(String beg, String end) 
    { 
     boolean startPrinting = false; 
     for (int i = 0; i < list.size(); i++) 
     { 
      if (startPrinting) { 
       System.out.println(list.get(i)); 
      } 
      if (list.get(i).equals(beg)) { 
       startPrinting = true; 
      } else if (list.get(i).equals(end)) { 
       break; 
      } 

     } 
    } 
+1

Upvoted,하지만 beg는 생략해야한다.따라서 인쇄 블록을 위쪽으로 옮길 수 있습니다. –

+0

고쳐 주셔서 감사합니다! – Keshava

0

indexOf() 메소드를 사용할 수도 있습니다. 나는 당신이 무엇을하고 있는지 확실하지 않지만 목록에는 중복 키가있을 수 있다는 것을 명심하십시오. Set을 대신 사용해보십시오.

package com.company;

import java.util.ArrayList; import java.util.List;

공용 클래스 홈페이지 {

private List<String> list = new ArrayList<String>(); 

{ 
    list.add("dog"); 
    list.add("cat"); 
    list.add("apple"); 
    list.add("banana"); 
    list.add("turtle"); 
} 

public void printRange(String beg, String end) 
{ 
    int start = list.indexOf(beg) + 1; 
    int finish = list.indexOf(end); 

    if (start <= 0 || start >= finish) return; 

    for(int i = start; i < finish; i++) 
    { 
     System.out.println(list.get(i)); 
    } 
} 

public static void main(String[] args) { 
    new Main().printRange("cat", "turtle"); 
} 

} 나는이 개 관련이없는 질문이 *

관련 문제