Java根据对象的不同属性对对象列表进行排序
我有一个IP地址、角色和组的列表。我想首先用组号对整个列表进行排序。根据新列表,对于每个组,我想再次按角色排序。最后,在前一个排序的基础上,按IP地址再次排序。我找不到实现目标的方法,为此奋斗了几个小时,请帮忙,提前谢谢 例如,列表如下所示:Java根据对象的不同属性对对象列表进行排序,java,sorting,Java,Sorting,我有一个IP地址、角色和组的列表。我想首先用组号对整个列表进行排序。根据新列表,对于每个组,我想再次按角色排序。最后,在前一个排序的基础上,按IP地址再次排序。我找不到实现目标的方法,为此奋斗了几个小时,请帮忙,提前谢谢 例如,列表如下所示: { <192.168.1.1, 1, "group 2">, <192.168.1.3, 1, "group 1">, <192.168.1.7, 2, "group 1">, <192.168.1.25,
{
<192.168.1.1, 1, "group 2">,
<192.168.1.3, 1, "group 1">,
<192.168.1.7, 2, "group 1">,
<192.168.1.25, 2, "group 1">,
<192.168.1.1, 2, "group 2">
}
理想情况下,经过三次排序后,输出应该如下所示:
{
<192.168.1.3, 1, "group 1">,
<192.168.1.7, 2, "group 1">,
<192.168.1.25, 2, "group 1">,
<192.168.1.1, 1, "group 2">,
<192.168.1.1, 2, "group 2">
}
创建IPComparator、GroupComparator、RoleComparator对象。这些对象实现了Comparator接口。例如, 类似地,类GroupComparator实现Comparator,类RoleComparator实现Comparator 首先是逻辑。collections.sortitems,新的GroupComparator;
第二个逻辑:现在选择角色等等。这会让你知道如何开始。请记住,您必须维护某种历史记录来对角色和IP进行排序 您可以使用system opportunity进行类似数组的排序。sortyourArray在此处:
也是非常有力的解释 为每种类型的排序定义比较器。然后使用Collections.Sorty您的列表、您希望使用的比较器 您可以使用Comparator,例如RoleComparator和IpComparator,根据角色和Ip地址对列表进行排序list.sortComparator.comparingTheClass::getGroup.Then comparingTheClass::getRole.Then comparingTheClass::getIPAddress@JBNizet你应该把你的评论作为回答
class IPComparator implements Comparator<IP>{
public compare (IP o1, IP o2){
//code here
}
}