我可以遍历List的所有元素,如下所示:
userList.forEach(user -> {
System.out.println(user);
});
我只想为第一个元素打印用户对象,但是我应该为列表中的所有元素循环打印。 如何实现?
答案 0 :(得分:3)
似乎您在问,如何打印第一个对象,但是遍历其余元素并对其进行其他逻辑处理,在这种情况下,您可以使用:
if(!userList.isEmpty()) System.out.println(userList.get(0));
userList.subList(1, userList.size()).forEach(user -> ...);
答案 1 :(得分:0)
如果要对第一个用户应用某些逻辑并继续与其他用户循环,则可以使用条件检查第一个对象是否为当前对象。从您的问题中了解到,这就是您想要的
userList.forEach(user -> {
if (userList.get(0) == user)
System.out.println("This is user with index 0");
System.out.println(user + " All users including 0");
});
正如Aomine在评论中说的那样,这对于每次检查列表的第一个元素可能不是一个很好的解决方案,并且如果在列表上重复相同的用户对象,则可能无法正常工作,因此最好将这样的逻辑分开< / p>
// Do something with the first user only
if(!userList.isEmpty())
System.out.println(userList.get(0));
// Do some stuff for all users in the list except the first one
userList.subList(1, userList.size()).forEach(user -> {
System.out.println(user + " All users without 0");
);
// Do some stuff for all users in the list
userList.forEach(user -> {
System.out.println(user + " All users");
);
使用流的另一种方法
// Dealing with first user only
if (!userList.isEmpty()) {
System.out.println("this is first user: " + userList.get(0));
}
// using stream skipping the first element
userList.stream().skip(1).forEach(user -> {
System.out.println(user);
});
还可以使用迭代器方法
// getting the iterator from the list
Iterator<String> users = userList.iterator();
// the first user
if(users.hasNext())
System.out.println("this is first user :" + users.next());
// the rest of the users
users.forEachRemaining(user -> {
System.out.println(user);
});
答案 2 :(得分:0)
这是使用for-each
List<String> userList = Arrays.asList("2","3","4");
IntStream.range(0, userList.size()).forEach(i -> {
if (i == 0)
System.out.println(userList.get(i));
else {
System.out.println("do other stuff");
}
});
O / P:
2
do other stuff
do other stuff
答案 3 :(得分:0)
这是JDK9中的另一种解决方案,因为您对lambda表达式有所了解:
IntStream.range(0, userList.size())
.peek(i -> {if(i == 0) System.out.println(userList.get(i));})
.dropWhile(i -> i == 0)
.forEach(i -> /* some other logic here */ );
就个人而言,对于生产代码,我会选择my other answer,但是如果您只是对lambda感兴趣,那么以上是您可以采用的另一种方法。
答案 4 :(得分:-1)
这应该有效
userList.foreach(user -> {
If(user == userList.get(0){
System.out.println(user)
}
})