2016-12-20 5 views
0

Sie können im Online-Java-Compiler hier https://www.codechef.com/ide java8 ausführen.Spezifischen Wert von Liste Java erhalten

Hier ist mein Code zu anderen Wert suchen: Ich möchte nur '18' drucken, wenn ich 'Java' suche. Dieser Code wird zurückgegeben: [Person (Java, 18)] Meine Frage, wie nur '18' gedruckt wird?

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

Ändern Sie Ihre 'toString()' Methode in 'Person' Klasse:' Rückkehr Alter; '. –

+0

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

Antwort

4

Sie drucken result-stdout. Die Objekte in dieser Liste sind vom Typ Person. Das ist die Methode wird verwendet, um eine Zeichenfolgendarstellung von result zu erhalten.

Wie in den Kommentaren erwähnt entweder die toString Methode der Person ändern Sie den Wert von age oder iterieren das Ergebnis nur zurückkehren und den Wert von age zu stdout schreiben.

2

Verfahren public static <T> List<T> searchIn(List<T> list , Matcher<T> m)List<T>, in Ihrem Fall Person zurückgibt, wenn Sie Person Alter erhalten wollen versuchen result.stream().map(Person::getAge).forEach(System.out::println);

Verwandte Themen