Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java根据对象的不同属性对对象列表进行排序_Java_Sorting - Fatal编程技术网

Java根据对象的不同属性对对象列表进行排序

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,

我有一个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, 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
}
}