Java根据不同的属性

时间:2017-05-24 17:12:06

标签: 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, 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">
}

3 个答案:

答案 0 :(得分:0)

创建IPComparator,GroupComparator,RoleComparator对象。这些对象implements Comparator Interface。 E.g;

class IPComparator implements Comparator<IP>{
 public compare (IP o1, IP o2){
//code here
}
}

同样,class GroupComparator implements Comparator<Group>class RoleComparator implements Comparator<Role>

现在是firstlogic。 collections.sort(items, new GroupComparator()); 第二个逻辑:现在去角色等等。这应该会让你知道如何开始。请记住,您必须保留某种历史记录来对角色和IP进行排序。

答案 1 :(得分:0)

您可以使用系统商机在此处对Arrays.sort(yourArray)进行排序:Java: Sort an array 同样非常强大的解释here

答案 2 :(得分:0)

为每种排序定义比较器。然后使用Collections.sort(your_list,comparator_you_want_to_use);