...
found.add( partnerList.stream()
.filter(paymentPartner ->
paymentPartner.getAccount().equals(rbs.getAccount()) && paymentPartner.getSum() == rbs.getSum())
.collect(Collectors.toList()));
...
public int hashCode() { return String.format("%d,%f", getAccount(), getSum()).hashCode(); }
public static void main(String[] args) {
char[] aMixed = "aAbBqwerrtyASFDSDFDF0123456 +_)(£*^\"(£)(&07097097".toCharArray();
int cntLower = 0, cntUpper = 0;
for (int ch: aMixed) {
if (Character.isLowerCase(ch))
cntLower++;
else if (Character.isUpperCase(ch))
cntUpper++;
}
String ver = System.getProperty( "java.version" );
System.out.printf("Java version: %s. ", ver == null ? "<unknown>" : ver);
System.out.printf("Found lower case chars %d, upper case chars %d%n", cntLower, cntUpper);
}
private static void main(String[] args)
String str1 = "Hello"; // строка-константа помещается компилятором в общий пул строк
String str2 = "Hello"; // строка-константа помещается компилятором в общий пул строк
String str3 = new String ("Hello"); // новая строка хранится вне пула, в хипе
String str4 = new String ("Hello").intern(); // intern опять помещает строку в общий пул строк
System.out.println("Проверка по равенству значений:");
System.out.printf("str1.equals(str2) => %b%n", str1.equals(str2));
System.out.printf("str2.equals(str3) => %b%n", str2.equals(str3));
System.out.printf("str3.equals(str4) => %b%n", str3.equals(str4));
System.out.printf("str1.equals(str4) => %b%n", str1.equals(str4));
System.out.println("Проверка по равенству ссылок(адресов):");
System.out.printf("(str1 == str2) => %b%n", str1 == str2);
System.out.printf("(str2 == str3) => %b%n", str2 == str3);
System.out.printf("(str3 == str4) => %b%n", str3 == str4);
System.out.printf("(str1 == str4) => %b%n", str1 == str4);
}
public static void main(String[] args) {
char[] aMixed = "aAbBqwerrtyASFDSDFDF0123456 +_)(£*^\"(£)(&07097097".toCharArray();
int cntLower = 0, cntUpper = 0;
for (char ch: aMixed)
if ( Character.isLowerCase( ch ) )
cntLower++;
else if (Character.isUpperCase(ch))
cntUpper++;
System.out.printf("Found lower case chars %d, upper case chars %d%n", cntLower, cntUpper);
}
JFrame window = null;
AWTUtilities.setWindowOpacity(window, 0.7f);
Дело вкуса. Мне привычнее и понятнее циклы и коллекции. Стримы просто без надобности.
Хотя не отрицаю, что кода с ними меньше. Но меньше - не значит понятнее. Чем выше абстракция, тем она обычно сложнее.
Пруфы в Инете не искал. Делал сам.
А циклы и коллекции быстрее по простой причине. Стримы слишком универсальны. должны удовлетворить всем типам данных. Поэтому с помощью них трудно выбрать все варианты и особенности структур данных. Например, в одном цикле можно сделать несколько произвольных операций над элементом коллекции, что является естественным.
В то же время стримы. их операторы делают что-либо на лету, за один проход. Стало быть. понадобится несколько проходов для доступа к разным элементам и их данным.
Грубо говоря, там где надо два стрима запустить, достаточно одного цикла.
В любом случае, разница в производительности вряд ли будет критической. Главное - понятность и ясность кода для автора. И для будущих читателей.
Это - главное!