【问题标题】:Get specific value of List Java获取 List Java 的具体值
【发布时间】:2017-05-05 14:09:35
【问题描述】:

你可以在这里运行在线java编译器https://www.codechef.com/ide选择java8。

这是我搜索其他值的代码: 当我搜索“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 );
}

【问题讨论】:

  • Person 类中的toString() 方法更改为:return age;
  • result.stream().forEach(p -&gt; System.out.println(p.age)).

标签: java list class arraylist


【解决方案1】:

您正在将result 打印到stdout。此列表中的对象类型为Person。也就是Person.toString()方法用来获取result的字符串表示。

如 cmets 中所述,要么将 Person 的 toString 方法更改为仅返回 age 的值,要么迭代结果并将 age 的值写入 stdout

【讨论】:

    【解决方案2】:

    方法public static &lt;T&gt; List&lt;T&gt; searchIn( List&lt;T&gt; list , Matcher&lt;T&gt; m ) 返回List&lt;T&gt;,如果你想获取人的年龄,在你的情况下是Person 试试result.stream().map(Person::getAge).forEach(System.out::println);

    【讨论】:

      猜你喜欢
      • 2023-01-31
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多