2017-01-10 3 views
-1

제목이 적합한 지 확실하지 않습니다. 하지만 현재 목록에있는 객체의 마지막 항목을 가져 오려고 노력하고 있습니다. 객체가 연령 (정수)과 이름 (문자열)으로 손상되었다고 가정 해 봅시다. 목록에서 나이 "18"의 마지막 항목을 가져오고 이름을 검색하려고합니다. 나는 이것에 대해 어떻게 갈 것인가?Java - 부분 데이터 만있는 목록에서 오브젝트의 마지막 항목 가져 오기

내가 함께 일하고 있어요 코드의

현재 블록 (죄송합니다, 한 많이 내려 물을 위해) :

private List<Callable<Void>> createTasks(ArrayList<NamesAndAges> namesAndAges) { 
     List<Callable<Void>> tasks = new ArrayList<Callable<Void>>(); 

     int endOfIndex = 0, beginningOfIndex = 0; 

     for (NamesAndAges nameAndAge : namesAndAges) 
     { 
      if (endOfIndex >= minSize && endOfIndex == namesAndAges.lastIndexOf(???)) 
      { 
       tasks.add(new addIntoDB(namesAndAges.subList(beginningOfIndex, endOfIndex))); 
       beginningofIndex = endOfIndex+1; 
      } 
      endOfIndex++; 
     } 
     return tasks; 
    } 

나는 기본적으로 위치에 붙어있어를 ??? 코드에 있습니다. 나는 lastIndexOf()를 사용하여 그것에 대해 갈 수 있다고 생각했습니다.

+0

이것은 Java에 관해서 프로그램 작성법에 대한 질문이 아닙니다. 그렇지 않습니까? 당신이 시도한 것을 보여줄 수 있습니까? – scottb

+0

객체 목록을 뒤집은 다음 for 루프를 사용하여 List를 트래버스합니다. 'age = 18'이 처음 나타날 때 for 루프에서'break '를 벗어납니다. 만약 당신이 더 나은 솔루션을 줄 수있는 몇 가지 코드를 제공합니다. –

+0

@scottb 오, 나는 그것이 하나의 라이너라고 생각했다. lastIndexOf()를 사용하여이를 사용하는 방법이 있는지 살펴 보았습니다. 길이가 1-2 라인 이상이라면 완전히 새로운 함수 나 클래스를 작성해야 할 것입니다. 내 잘못이야. –

답변

0

this answer을 바탕으로 당신이 목록이있는 경우, 당신은 컬렉션의 끝에서 당신의 반복자를 시작할 수 거꾸로 반복 :

// Substitute appropriate type. 
ArrayList<MyItem> a = new ArrayList<MyItem>(); 

// add your elements... 

// Generate an iterator. Start after the last element. 
ListIterator li = a.listIterator(a.size()); 

// Iterate in reverse. 
MyItem mi = null; 
while(li.hasPrevious()) { 
    mi = li.previous(); 
    if(mi.getAge().equals("18")) { // obviously, your test will likely differ... 
     break; 
    } 
} 
+0

음 ... 나는 그 질문에 답할 것 같지만, 그것에 대해 더 좋은 방법이있을 것이라고 생각했다. –

0

것은 이런 일을보십시오.

ArrayList<Integer> a = new ArrayList<Integer>(); 

    // add your elements... 
    for(int i = 1; i < 19; i++) 
    { 
     a.add(i); 
    } 


    while(a.size() > 0) 
    {    
     System.out.println("last item: " + a.get(a.size() - 1));//print last item 
     a.remove(a.size() - 1);//remove last item 
    }