对 TreeSet 的 ArrayList 进行排序
Sorting ArrayList of TreeSets
我有一个这样定义的 TreeSet 数组列表(在 Java 中),其中 n 是某个给定的数字。
ArrayList<TreeSet<Integer>>(n)
因为我知道 TreeSet 中的所有值都是按升序排序的,所以我的列表未排序。现在我想根据每个 TreeSet 的第一个元素对我的列表进行排序,以便对列表和所有树集进行排序。
是否可以仅对我使用 list.get(i) 获得的这些元素进行排序?这也会弄乱我的 TreeSets 吗?
假设您已经初始化了一个 ArrayList<TreeSet<Integer>>
;我们称之为 list
.
您必须通过自定义 Comparator<TreeSet<Integer>>
来对每个 TreeSet<Integer>
:
进行排序
Collections.sort(list, Comparator.comparing(TreeSet::first));
这将根据每个 TreeSet<Integer>
的第一个元素按升序对 ArrayList<TreeSet<Integer>>
进行排序。
您可以尝试使用自定义比较器对 ArrayList
进行排序。在这种情况下,您的自定义比较器可以比较两个树集元素中每一个的第一个数字。
Collections.sort(list, new ListOfTreeSetComparator());
class ListOfTreeSetComparator implements Comparator<TreeSet<Integer>> {
@Override
public int compare(TreeSet<Integer> ts1, TreeSet<Integer> ts2) {
return ts1.first().compareTo(ts2.first());
}
}
请注意,您的逻辑可能存在问题。仅仅因为每个 TreeSet
中的 first 元素在您的 ArrayList
中具有升序并不一定意味着所有元素都会被排序。
这里有一些你可以实现的粗略想法
Collections.sort(ArrayList, new Comparator<TreeSet<Integer>>() {
@Override
public int compare(TreeSet lhs, TreeSet rhs) {
// -1 - less than, 1 - greater than, 0 - equal
return lhs.first().compareTo(rhs.first());
}
});
我有一个这样定义的 TreeSet 数组列表(在 Java 中),其中 n 是某个给定的数字。
ArrayList<TreeSet<Integer>>(n)
因为我知道 TreeSet 中的所有值都是按升序排序的,所以我的列表未排序。现在我想根据每个 TreeSet 的第一个元素对我的列表进行排序,以便对列表和所有树集进行排序。
是否可以仅对我使用 list.get(i) 获得的这些元素进行排序?这也会弄乱我的 TreeSets 吗?
假设您已经初始化了一个 ArrayList<TreeSet<Integer>>
;我们称之为 list
.
您必须通过自定义 Comparator<TreeSet<Integer>>
来对每个 TreeSet<Integer>
:
Collections.sort(list, Comparator.comparing(TreeSet::first));
这将根据每个 TreeSet<Integer>
的第一个元素按升序对 ArrayList<TreeSet<Integer>>
进行排序。
您可以尝试使用自定义比较器对 ArrayList
进行排序。在这种情况下,您的自定义比较器可以比较两个树集元素中每一个的第一个数字。
Collections.sort(list, new ListOfTreeSetComparator());
class ListOfTreeSetComparator implements Comparator<TreeSet<Integer>> {
@Override
public int compare(TreeSet<Integer> ts1, TreeSet<Integer> ts2) {
return ts1.first().compareTo(ts2.first());
}
}
请注意,您的逻辑可能存在问题。仅仅因为每个 TreeSet
中的 first 元素在您的 ArrayList
中具有升序并不一定意味着所有元素都会被排序。
这里有一些你可以实现的粗略想法
Collections.sort(ArrayList, new Comparator<TreeSet<Integer>>() {
@Override
public int compare(TreeSet lhs, TreeSet rhs) {
// -1 - less than, 1 - greater than, 0 - equal
return lhs.first().compareTo(rhs.first());
}
});