我需要从给定的超级列表中获取子列表,如下所述.
假设我有一个"Person"对象的超级列表,如下所示:
List<Person> personsList = new ArrayList<>();
personsList.add(new Person("John", 28));
personsList.add(new Person("Paul", 29));
personsList.add(new Person("Adam", 30));
personsList.add(new Person("Peter", 31));
personsList.add(new Person("Kate", 32));
personsList.add(new Person("John", 67));
personsList.add(new Person("Paul", 68));
personsList.add(new Person("Adam", 69));
Run Code Online (Sandbox Code Playgroud)
让Person类定义如下:
class Person {
public String name;
public int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
Run Code Online (Sandbox Code Playgroud)
通过使用Java Streams API,如何获取包含以下条目的子列表(请注意,必须获取具有相同名称的对象的重复实例):
John : 28
John : 67
Paul : 29 …Run Code Online (Sandbox Code Playgroud) 假设我有一个方法,它采用两个double类型的数组,而不是采用double类型的局部变量'sum',初始值为零.之后,for循环从开始到结束迭代并像这样减去a1 [i] - b [i]并将结果保存到另一个名为minus的局部变量中.比减去*减去并将它与sum变量和末尾总和中的现有值相加.我很困惑如何使用流在java 8中实现这一点.有谁能够帮我?
public double calculate(double[] a1, double[] b2, int start, int end) {
double sum = 0.0;
for(int i = start; i < end; i++) {
final double minus = a1[i] - b2[i];
sum += minus * minus;
}
return sum;
}
Run Code Online (Sandbox Code Playgroud) 我正在阅读java 8,并且作者说如果你有一个覆盖toString方法的类,那么在进行collect(joined())时你不需要将流映射到字符串.一个例子:
public static void main(String... args) {
List<Person> people =
Arrays.asList(
new Person(23, "Paul"),
new Person(23, "John"),
new Person(23, "Greg"),
new Person(24, "Greg"),
new Person(25, "Paul")
); // Person overrides toString
String peopleString = people
.stream()
.collect(Collectors.joining());
System.out.println(peopleString);
}
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用,只有这样:
String peopleString = people
.stream()
.map(Person::toString)
.collect(Collectors.joining());
Run Code Online (Sandbox Code Playgroud)
工作,所以这本书错了吗?此外,为什么他说(我改变了一点措辞):
另请注意,如果某个类有一个toString方法返回一个字符串,您将获得相同的结果,而无需使用提取名称的函数映射原始流.
当每个对象应该继承toString的Object?
我想将对象列表转换为Map,
我正在尝试使用Java 8的流API来实现,
但遇到2个错误,其中1个是导入错误,1个是List到Map的转换代码。
导入地图界面时出错-
The import java.util.Map conflicts with a type defined in the same file.
转换码错误-
The type Map is not generic; it cannot be parameterized with arguments <String, BigDecimal>
Run Code Online (Sandbox Code Playgroud)
以下是我的代码-
public class Developer {
private String name;
private BigDecimal sal;
private int age;
/**
* @param name
* @param sal
* @param age
*/
public Developer(String name, BigDecimal sal, int age) {
super();
this.name = name;
this.sal = sal;
this.age = age;
}
/**
* @return the …Run Code Online (Sandbox Code Playgroud) 我想通过java8的lambda表达式重写下面的for-loop语句.
public class Test {
List<ObjectTest> lst;
public int operation(int a, int b) {
return a * b;
}
int max = 0;
ObjectTest suitableObj = null;
for(ObjectTest obj:lst) {
int result = operation(obj.getA(), obj.getB());
if(result > max) {
suitableObj = obj;
max = result;
}
}
}
Run Code Online (Sandbox Code Playgroud)
lambda表达式怎么可能?
我需要从逗号分隔的String创建枚举列表.我在属性文件中有一些配置,主要是列表HttpStatus
喜欢:
some.config=TOO_MANY_REQUESTS,GATEWAY_TIMEOUT,BAD_GATEWAY
Run Code Online (Sandbox Code Playgroud)
此配置可以绑定到LIST,如下所示:
@Value("#{'${some.config}'.split(',')}")
private List<HttpStatus> statuses;
Run Code Online (Sandbox Code Playgroud)
现在可以用我的一行代码完成.我收到的字符串如下:
@Bean(name = "somebean")
public void do(@Value("${some.config:}") String statuses) throws IOException {
private List<HttpStatus> sList = StringUtils.isEmpty(statuses) ?
globalSeries : **Arrays.asList(statuses.split("\\s*,\\s*"));**
}
Run Code Online (Sandbox Code Playgroud)
Arrays.asList(series.split( "\ S*,\ S*")); 将创建一个字符串列表,现在我可以创建一个枚举列表,否则我需要迭代临时列表然后创建一个枚举列表.
我正在寻找一些帮助将对象列表转换为Map<String, List<String>>.
class Person {
private String name;
private int age;
}
Run Code Online (Sandbox Code Playgroud)
我有一个List<Person>,我想收集Map<int, List<String>>关键是年龄和价值是同龄人的名单.
我试过这些线但是没有用
persons.stream().collect(Collectors.groupingBy(p -> p.getAge()), );
Run Code Online (Sandbox Code Playgroud) 我正在将nodejs代码转换为Java8.
在节点中有代码如下所示
var ipToEndAt = ippp.prev("192.168.1.225");
Run Code Online (Sandbox Code Playgroud)
结果ipToEndAt 是"192.168.1.224"
我需要将此行转换为java代码.我搜索了SubnetUtils库,但找不到合适的东西.
类似我还需要将ip地址增加1
任何人都可以建议一个库或代码片段?这将是最好的
我正在努力拓宽我的Java视野并开始实际编写Java 8+代码.我有一个情况,我有一个POJO列表(每个POJO实例都有一个id : Long字段),我需要生成一个List<Long>代表他们所有的ids.这是我的代码完美无缺:
List<Fizzbuzz> fizzbuzzes = getFizzbuzzes();
List<Long> fbIds = new ArrayList<>();
for(Fizzbuzz fb : fizzbuzzes) {
fbIds.add(fb.getId());
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更"现代"的Java 8+方式(lambdas或集合技巧,流媒体等)来编写这段代码.任何想法还是这样的好事?
我有一个基本的SpringBoot应用程序.使用Spring Initializer,JPA,嵌入式Tomcat,Thymeleaf模板引擎和包作为可执行JAR文件我想创建一个基于POJO的自定义SummaryStatistics,它有2个字段,price和updateDate.此统计数据应该是最小/最大价格和最小/最大价格的日期.
public class MenuPriceSummaryStatistics implements Consumer<MenuPrice> {
private long count;
private double sum;
private double sumCompensation; // Low order bits of sum
private double simpleSum; // Used to compute right sum for non-finite inputs
private double min = Double.POSITIVE_INFINITY;
private double max = Double.NEGATIVE_INFINITY;
private Date maxDate;
private Date minDate;
public MenuPriceSummaryStatistics() {
}
/**
* Combines the state of another {@code DoubleSummaryStatistics} into this one.
*
* @param other
* another {@code DoubleSummaryStatistics}
* @throws NullPointerException
* if …Run Code Online (Sandbox Code Playgroud) lambda functional-programming java-8 java-stream functional-interface