Wspólny interfejs do tworzenia obiektu, który określa sposób porównywania innych obiektów. W przypadku używania tego tagu w przypadku trudnych pytań dotyczących implementacji - oznacz język kodu, w którym jest napisana implementacja.
Czytałem o sortowaniu ArrayLists przy użyciu Komparatora, ale we wszystkich przykładach ludzie używali, compareToco według niektórych badań jest metodą dla Ciągów. Chciałem posortować ArrayList niestandardowych obiektów według jednej z ich właściwości: obiektu Date ( getStartDay()). Zwykle je porównuję, item1.getStartDate().before(item2.getStartDate())więc zastanawiałem się, czy mógłbym napisać coś takiego: public class CustomComparator { …
Czy ktoś może mi wyjaśnić w prosty sposób, dlaczego ten kod generuje wyjątek „Metoda porównawcza narusza ogólną umowę!” I jak to naprawić? private int compareParents(Foo s1, Foo s2) { if (s1.getParent() == s2) return -1; if (s2.getParent() == s1) return 1; return 0; }
Nauczyłem się używać porównywalnego, ale mam trudności z Komparatorem. Mam błąd w moim kodzie: Exception in thread "main" java.lang.ClassCastException: New.People cannot be cast to java.lang.Comparable at java.util.Arrays.mergeSort(Unknown Source) at java.util.Arrays.sort(Unknown Source) at java.util.Collections.sort(Unknown Source) at New.TestPeople.main(TestPeople.java:18) Oto mój kod: import java.util.Comparator; public class People implements Comparator { private int id; …
Próbuję posortować tablicę obiektów według określonej wartości w obiekcie. Jakie byłoby najlepsze podejście do zrobienia takiej rzeczy. Czy powinienem używać Collections.sort () z jakimś komparatorem? Próbuję posortować listę obiektów według wartości typu float, które przechowują w jednej ze zmiennych. EDYCJA: To, co mam do tej pory: public class CustomComparator implements …
Mam listę obiektów, które muszę posortować według pola, powiedzmy Wynik. Bez zastanawiania się napisałem nową klasę, która implementuje komparator, który wykonuje zadanie i działa. Patrząc wstecz na to, zastanawiam się, czy zamiast tego powinienem mieć moją klasę implementującą Comparable, zamiast tworzyć nową klasę, która implementuje Comparator. Wynik jest jedynym polem, …
W jaki sposób poniższy kod sortuje tę tablicę w kolejności numerycznej? var array=[25, 8, 7, 41] array.sort(function(a,b){ return a - b }) Wiem, że jeśli wynik obliczeń to ... Mniejsze niż 0 : „a” jest sortowane jako indeks niższy niż „b”. Zero: „a” i „b” są uważane za równe i …
Widziałem wiele pytań na ten temat i próbowałem rozwiązać problem, ale po godzinie googlowania i wielu prób i błędów nadal nie mogę tego naprawić. Mam nadzieję, że niektórzy z was złapią problem. Oto, co otrzymuję: java.lang.IllegalArgumentException: Comparison method violates its general contract! at java.util.ComparableTimSort.mergeHi(ComparableTimSort.java:835) at java.util.ComparableTimSort.mergeAt(ComparableTimSort.java:453) at java.util.ComparableTimSort.mergeForceCollapse(ComparableTimSort.java:392) at java.util.ComparableTimSort.sort(ComparableTimSort.java:191) …
Przyglądałem się różnicy między Collections.sorti list.sort, w szczególności w odniesieniu do używania Comparatormetod statycznych i tego, czy typy parametrów są wymagane w wyrażeniach lambda. Zanim zaczniemy, wiem, że mógłbym użyć referencji do metod, np. Song::getTitleAby przezwyciężyć swoje problemy, ale moje zapytanie tutaj nie jest czymś, co chcę naprawić, ale czymś, …
Korzystając zarówno z Java 8, jak i Java 11, weź pod uwagę następujące kwestie TreeSetz String::compareToIgnoreCasekomparatorem: final Set<String> languages = new TreeSet<>(String::compareToIgnoreCase); languages.add("java"); languages.add("c++"); languages.add("python"); System.out.println(languages); // [c++, java, python] Kiedy próbuję usunąć dokładne elementy znajdujące się w TreeSet, to działa: wszystkie te określone są usuwane: languages.removeAll(Arrays.asList("PYTHON", "C++")); System.out.println(languages); // …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.