Суть задачи: Получить из коллекции поток (Stream). Получить из потока коллекцию всех пользователей, имена которых не содержат чисел, вывести содержимое коллекции в консоль. С помощью потока посчитать количество юзеров у которых в именах есть числа и вывести количество в консоль. Я не могу не вывести юзеров и посчитать с помощью регулярного выражения Вот что я пробовал
package home_work_streamapi;
import java.util.ArrayList;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Home_Work_StreamAPI {
public static void main(String[] args) {
ArrayList<User> alu = new ArrayList<User>();
alu.add(new User("Jack1", 23));
alu.add(new User("Harry", 31));
alu.add(new User("Charlie12", 18));
alu.add(new User("Thomas", 32));
alu.add(new User("Amelia33", 30));
alu.add(new User("Olivia3", 19));
alu.add(new User("Emily", 18));
alu.add(new User("Sophie", 25));
// alu.stream().forEach(x -> System.out.println(x));
alu.stream().filter(e -> e.getName().matches("[a-zA-Z]")).forEach(e -> System.out.println(e));
}
}
Class User :
package home_work_streamapi;
import java.util.Objects;
class User {
private String name;
private int age;
public User() {
}
public User(String name, int age) {
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public int hashCode() {
int hash = 5;
hash = 97 * hash + Objects.hashCode(this.name);
hash = 97 * hash + this.age;
return hash;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final User other = (User) obj;
if (!Objects.equals(this.name, other.name)) {
return false;
}
if (this.age != other.age) {
return false;
}
return true;
}
@Override
public String toString() {
return "User{" + "name=" + name + ", age=" + age + '}';
}
}
В принципе Вы все делаете правильно, кроме самих регулярок
Для проверки идей рекомендую https://regex101.com/
List<User> alu = new ArrayList<User>();
alu.add(new User("Jack1", 23));
alu.add(new User("Harry", 31));
alu.add(new User("Charlie12", 18));
alu.add(new User("Thomas", 32));
alu.add(new User("Amelia33", 30));
alu.add(new User("Olivia3", 19));
alu.add(new User("Emily", 18));
alu.add(new User("Sophie", 25));
System.out.println("\n without digits");
alu.stream().filter(e -> e.getName().matches(".*\\D")).forEach(System.out::println);
System.out.println("\n ends with digits");
alu.stream().filter(e -> e.getName().matches(".*\\d")).forEach(System.out::println);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите какие-нибудь простые но эффективные технологии для считывания содержимого *STL файла, обработки этого содержимого и вывода на экран...
Как настроить H2 в Spring Boot для постоянного хранения данных?
Объясните пожалуйста разницу между reduction и mutable reductionВ документации Oracle описано, метод класса Stream reduce() это reduction, метод collect() -это mutable reduction
помогите пожалуйста мне нужно обрезать половину строки в javascript, но я не знаю самого слова, что мне делать?