Как отсортировать эту карту - PullRequest
0 голосов
/ 01 октября 2018

У меня есть эта Карта, которая содержит имена, фамилии и другую личную информацию, например:

jhon:[doe];

ann:[devil]

Мне нужно упорядочить их в алфавитном порядке, но такая структура является новой для меня,Как я могу заказать их в алфавитном порядке?Вот мой код

 private String uid;
    private String username;
    private String fullName;
    private String name;
    private String lastname;
    private String email;
    private String phone;
    private Map<String, List<PorticoProfile>> profiles;

    public Map<String, List<PorticoProfile>> getProfiles() {
        if (profiles == null) {
            profiles = new LinkedHashMap<>();
        }
        return profiles;
    }

    public void setProfiles(Map<String, List<PorticoProfile>> profiles) {
        this.profiles = profiles;
    }

    public void setFullName(String fullName) {
        this.fullName = fullName;
        if (fullName.contains(" ")){
            String[] nameParts = fullName.split(" ");
            this.name = nameParts[0];
            this.lastname = nameParts[1];
        }
    }

    @Override
    public String toString(){
        final String BREAK = System.getProperty("line.separator");
        StringBuilder sb = new StringBuilder();
        sb.append("uid: ").append(this.uid).append(BREAK);
        sb.append("username: ").append(this.username).append(BREAK);
        sb.append("fullname: ").append(this.fullName).append(BREAK);
        sb.append("email: ").append(this.email).append(BREAK);
        sb.append("phone: ").append(this.phone).append(BREAK);
        if (this.getProfiles().size() > 0){
            sb.append("profiles: ").append(this.profiles.keySet().stream().collect(Collectors.joining(", "))).append(BREAK);
        }
        return sb.toString();
    }

Ответы [ 3 ]

0 голосов
/ 01 октября 2018

Использование TreeMap - https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html

LinkedHashMap сохранит порядок, в котором вы добавляете данные на карту, TreeMap сохранит их сортировку на основе ключа, который в вашем случае являетсяString то есть имя

Map<String, List<PorticoProfile>> profiles = new TreeMap<>();;
0 голосов
/ 01 октября 2018

Попробуйте:

Map<String, List<MyClass>> sorted = map.entrySet()
        .stream()
        .sorted(Comparator.comparing(Map.Entry::getKey)) // sort by key
        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
0 голосов
/ 01 октября 2018

Я думаю, вы должны проверить другой интерфейс: SortedMap (https://docs.oracle.com/javase/8/docs/api/java/util/SortedMap.html)

    Map<String, Object> m = new HashMap<>();
    m.put("john", "doe");
    m.put("ann", "devil");

    SortedMap<String, Object> s = new TreeMap<>(m);
    s.entrySet().forEach(System.out::println);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...