У меня HashMap
. Я хотел бы отфильтровать этот HashMap
тремя разными способами. В моем HashMap
у меня есть три позиции: от, по, до.
Первый метод должен фильтровать мой HashMap
, например, используя: from. Если я выберу "city1"
, метод должен отображать только все подключения, где from ='city1'
Второй метод должен отфильтровать мой HashMap
, используя, например: by. Этот метод и поток должны отображать все соединения, где by ="city2"
или, например, пустой string = ""
, в этом случае
Третий метод должен фильтровать мои HashMap
, используя, например: to ="city3"
Если я выберу "city3"
метод должен отображать только все соединения, где to ='city3'
Четвертый метод отображает все HashMap
- он работает нормально.
public static Map<Integer, City> getAllCitiesMap() {
Map<Integer, City> allCitiesMap = new HashMap<Integer, City>();
allCitiesMap.put(0,new City("city1","", "city2"));
allCitiesMap.put(1,new City("city1","city2", "city4"));
allCitiesMap.put(2,new City("city1", "","city5"));
allCitiesMap.put(3,new City("city1", "city2","city7"));
allCitiesMap.put(4,new City("city2","", "city1"));
allCitiesMap.put(5,new City("city2", "city1","city8"));
allCitiesMap.put(6,new City("city2", "","city6"));
allCitiesMap.put(7,new City("city2", "","city5"));
allCitiesMap.put(8,new City("city2", "","city4"));
allCitiesMap.put(9,new City("city2", "","city7"));
return allCitiesMap;
}
public class City {
private static String from;
private static String by;
private static String to;
public City(String from, String by, String to) {
this.from = from;
this.by = by;
this.to = to;
}
public static String getFrom() {
return from;
}
public static String getBy() { return by; }
public static String getTo() {
return to;
}
Я использовал четыре метода, но эти методы не отображать и не фильтровать то, что я хотел бы видеть. Только четвертый способ работает нормально. Как это сделать, улучшите код ниже?
1.
public static void findAllConnectionFromOneCity(){
AllCities.getAllCitiesMap().entrySet().stream()
.filter(c -> City.getFrom().equals("city1"))
.forEach(System.out::println);
}
public static void findAllConnectionToOneCity(){
AllCities.getAllCitiesMap().entrySet().stream()
.filter(c -> City.getBy().equals("city1"))
.forEach(System.out::println);
}
public static void filterCities(Map<Integer, String> allCitiesMap){
Map<Integer, String> filteredCitiesMap =
allCitiesMap.entrySet()
.stream()
.filter(s -> City.getTo().equals("city1"))
.collect(Collectors.toMap(Map.Entry::getKey,
Map.Entry::getValue));
}
public static void findAllCities(){
AllCities.getAllCitiesMap().entrySet().stream()
.forEach(System.out::println);
}