Сортировка одинаковых фамилий

206
28 декабря 2021, 19:40

Имеется следующий код

public static void main(String[] args) {
        String[] names=new String[]{
                "Иванов","Иванова","Гороховская","Гороховской",
                "Глушницкий","Глушницкая","Борисова","Борисов"
        };
        TreeMap<String,TreeList> paraFam=new TreeMap<>();
        for (String name:names)
        {
            if (!paraFam.containsKey(name))
            {
                TreeList family=new TreeList();
                family.add(name);
                paraFam.put(name,family);
            }
            else {
                TreeList family=paraFam.get(name);
                family.add(name);
                paraFam.put(name,family);
            }
        }
        for(Map.Entry entry:paraFam.entrySet())
        {
            TreeList<String> family= (TreeList) entry.getValue();
            System.out.println("Фамилия---"+entry.getKey()+"------");
            for (String name:family)
            {
                System.out.println(name);
            }
        }
    }

Подскажите пожалуйста, как можно изменить код для того, что бы одинаковые фамилии, независимо от пола помещались в одинаковый список, но при этом не изменялись.

Answer 1

Я решил путем создания статического метода приведения фамилий к женским

public class WordWorker {
    public static void main(String[] args) {
        String[] names=new String[]{
                "Иванов","Иванова","Гороховская","Гороховской",
                "Глушницкий","Глушницкая","Борисова","Борисов"
        };
        TreeMap<String,TreeList> paraFam=new TreeMap<>();
        for (String name:names)
        {
            if (!paraFam.containsKey(manforwomew(name)))
            {
                TreeList family=new TreeList();
                family.add(name);
                paraFam.put(manforwomew(name),family);
            }
            else {
                TreeList family=paraFam.get(manforwomew(name));
                family.add(name);
                paraFam.put(manforwomew(name),family);
            }
        }
        for(Map.Entry entry:paraFam.entrySet())
        {
            TreeList<String> family= (TreeList) entry.getValue();
            System.out.println("Фамилия---"+entry.getKey()+"------");
            for (String name:family)
            {
                System.out.println(name);
            }
        }
    }
    private static String manforwomew(String family)
    {
        String result;
        String okonch = family.substring(family.length()-2);
        if(okonch.equals("ов")||okonch.equals("ев")||okonch.equals("ёв")||
                okonch.equals("ин"))
        {
            result=family+"а";
        }
        else if(okonch.equals("ой")||okonch.equals("ий")||okonch.equals("ый"))
        {
            result=family.substring(0,family.length()-2)+"ая";
        }
        else result=family;
        return result;
    }
}

Однако, думаю это не самое красивое решение.

READ ALSO
FCM уведомления не доходят

FCM уведомления не доходят

Не приходят push уведомленияПри отсылке сервер гугла возвращает {"multicast_id":410383576077558298,"success":1,"failure":0,"canonical_ids":0,"results":[{"message_id":"0:1576316927466102%b078b91ff9fd7ecd"}]}...

185
фон svg через js

фон svg через js

Есть блок с svg, в котором меняется цвет при клике на блокhttp://u558049

92
Управление спящим режимом пк

Управление спящим режимом пк

Необходимо реализовать управление спящим режимом пк на c++, у меня вообще нет идей как это реализовать(я только начал изучение с++)

132