2016-12-20 2 views
0

온라인 Java 컴파일러에서 실행할 수 있습니다. https://www.codechef.com/ide java8을 선택하십시오.목록의 특정 값 얻기 Java

다른 값을 검색하는 코드는 다음과 같습니다. 'Java'를 검색하면 '18'만 인쇄됩니다. 이 코드는 반환합니다 : [Person (Java, 18)] 내 질문 그냥 '18'인쇄하는 방법?

import java.util.*; 
class LinearSearchDemo { 
    public static void main (String[] args) { 
     List<Person> list = Arrays.asList(
            Person.create("Oscar", 16), 
            Person.create("Oei", 17), 
            Person.create("Java", 18) 
         ); 

     List<Person> result = searchIn(list, 
       new Matcher<Person>() { 
        public boolean matches(Person p) { 
         return p.getName().equals("Java"); 
       }}); 

     System.out.println(result); 
    } 
    public static <T> List<T> searchIn(List<T> list , Matcher<T> m) { 
     List<T> r = new ArrayList<T>(); 
     for(T t : list) { 
      if(m.matches(t)) { 
       r.add(t); 
      } 
     } 
     return r; 
    } 
} 

class Person { 
    String name; 
    int age; 

    String getName(){ 
     return name; 
    } 
    int getAge() { 
     return age; 
    } 
    static Person create(String name, int age) { 
     Person p = new Person(); 
     p.name = name; 
     p.age = age; 
     return p; 
    } 
    public String toString() { 
     return String.format("Person(%s,%s)", name, age); 
    }  
} 
interface Matcher<T> { 
    public boolean matches(T t); 
} 
+0

변경을 시도 :'반환 시대;'. –

+0

'result.stream(). forEach (p -> System.out.println (p.age))'. –

답변

4

당신은 stdout-result를 인쇄 할 수 있습니다. 이 목록의 개체는 Person입니다. 즉, 메서드는 result의 문자열 표현을 가져 오는 데 사용됩니다. 코멘트에서 언급 한 중 단지 age의 값을 반환하거나 결과를 반복하고 stdoutage의 값을 작성하는 사람의 toString 방법을 변경으로

.

2

는 사람의 나이 를 얻으려면 귀하의 경우 사람에, List<T>을 반환 public static <T> List<T> searchIn(List<T> list , Matcher<T> m) 방법에 Person` 클래스`에서`toString()`방식 result.stream().map(Person::getAge).forEach(System.out::println);