много дней дней решаю, наконец добился что пары добавляются нужные. но последнее условие не проходит вообще.
package com.javarush.task.task22.task2207;
import java.io.*;
import java.nio.charset.Charset;
import java.nio.charset.StandardCharsets;
import java.util.*;
/*
Обращенные слова
*/
public class Solution {
public static List<Pair> result = new LinkedList<>();
public static List<Pair> result1 = new LinkedList<>();
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String fileAdress = reader.readLine();
reader.close();
// BufferedReader bufferedReader = new BufferedReader(new FileReader(fileAdress));
//BufferedReader bufferedReader = new BufferedReader(new FileReader("C:/Users/user/Desktop/file/f1.txt"));
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(new FileInputStream(fileAdress), "UTF-8"));
char str;
StringBuilder stringBuilder = new StringBuilder();
while (bufferedReader.ready()) {
str = (char) bufferedReader.read();
stringBuilder.append(str);
}
String s = new String(stringBuilder);
s = s.replaceAll("\r\n"," ");
//System.out.println(s);
/*StringBuilder[] sList = Arrays.stream(s.split(" "))
.map(StringBuilder::new)
.toArray(StringBuilder[]::new); //создаем массив слов StringBuilder
System.out.println(Arrays.toString(sList));
Pair p;
ArrayList<StringBuilder> list = new ArrayList<StringBuilder>();
for(StringBuilder sb : sList){
list.add(sb);
}*/
// ____________________________________________
String[] str1 = s.split(" ");
String[] strings1 = new String[str1.length];
String[] strings2 = new String[str1.length];
for(int i = 0; i<str1.length; i++){
strings1[i] = new String(str1[i]);
}
for(int i = 0; i<str1.length; i++){
strings2[i] = strings1[i];
}
/* ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
for(int i = 0; i < strings1.length; i++){
list1.add((strings1[i]));
}
for(int i = 0; i < list1.size(); i++){
list2.add(list1.get(i));
}*/
// System.out.println(list1+" это аррейлист list1");
// System.out.println(Arrays.toString(strings1)+" это strings1");
// System.out.println(Arrays.toString(strings2)+" это strings2");
// System.out.println(list2+" это аррейлист list2");
// System.out.println((list1.get(0).equals(strings1[0]))+" сравнение содержимого строк");
// System.out.println((list1.get(0)==(strings1[0]))+ " сравнение ссылок на объекты");
StringBuilder stRev;
Pair p;
int a = 0;
for(int i = 0; i<strings1.length; i++) {
stRev = new StringBuilder(strings1[i]);
stRev.reverse();
if(stRev.equals("."))
continue;
for(int j = 0; j<strings2.length; j++){
if(stRev.toString().equals(strings2[j]) & strings1[i]!=strings2[j]) {
p = new Pair();
p.first = strings2[i];
p.second = strings2[j];
// System.out.println(strings1[i] +" "+strings2[j]);
// if(!result.contains(p)){
result.add(p);
strings1[i] = ".";
strings1[j] = ".";
strings2[i] = ".";
strings2[j] = ".";
break;
}
}
}
for(Pair pair1 : result){
System.out.println(pair1);
}
}
public static class Pair {
String first;
String second;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Pair pair = (Pair) o;
if (first != null ? !first.equals(pair.first) : pair.first != null) return false;
return second != null ? second.equals(pair.second) : pair.second == null;
}
@Override
public int hashCode() {
int result = first != null ? first.hashCode() : 0;
result = 31 * result + (second != null ? second.hashCode() : 0);
return result;
}
@Override
public String toString() {
return first == null && second == null ? "" :
first == null ? second :
second == null ? first :
first.compareTo(second) < 0 ? first + " " + second : second + " " + first;
}
}
}