如何从Java HashSet的分区中选择唯一的代表
我想知道一种实现我正在尝试的场景的方法 我有一个HashSet对象,其中Object具有int类型的属性a。现在,我希望根据属性a的不同值从HashSet的每个不同分区中获得一个代表 例如: 让HashSet如何从Java HashSet的分区中选择唯一的代表,java,set,hashset,Java,Set,Hashset,我想知道一种实现我正在尝试的场景的方法 我有一个HashSet对象,其中Object具有int类型的属性a。现在,我希望根据属性a的不同值从HashSet的每个不同分区中获得一个代表 例如: 让HashSet {O1, O2, O3, O4, O5, O6} where O1 to O6 are objects with attribute values as follows Partition #1 O1.A = 1 O2.A = 1 Partition #2 O3.A = 2 O4.A =
{O1, O2, O3, O4, O5, O6} where O1 to O6 are objects with attribute values as follows
Partition #1
O1.A = 1
O2.A = 1
Partition #2
O3.A = 2
O4.A = 2
O5.A = 2
Partition #3
O6.A = 3
我要每个分区派一名代表
e.g. {O1, O4, O6}
有人能提出一些办法吗?任何帮助都将不胜感激
谢谢
Somnath创建从整数到对象列表的映射:
Map<Integer, List<YourObject>> map
输出:
O2
O4
O6
创建从整数到对象列表的映射:
Map<Integer, List<YourObject>> map
输出:
O2
O4
O6
制作一个映射
(最好是一个树形映射,这样分区就有序了),并将数据复制到其中:
Map<Integer, YourClass> partitions = new TreeMap<Integer, YourClass>();
for (YourClass x: set){
Integer p = x.getA();
if (partitions.containsKey(p))
continue;
partitions.put(p, x);
}
制作一个映射
(最好是一个树形映射,这样分区就有序了),并将数据复制到其中:
Map<Integer, YourClass> partitions = new TreeMap<Integer, YourClass>();
for (YourClass x: set){
Integer p = x.getA();
if (partitions.containsKey(p))
continue;
partitions.put(p, x);
}
我建议您获取所有结果并将其存储到HashMap中。由于其键是唯一的,因此可以从中获取值。我建议您获取所有结果并将其存储到HashMap中。由于其键是唯一的,因此可以从中获取值。
HashSet-inputSet;//假设输入集已经初始化。。。为了清楚起见,把它放在这里
HashSet<MyObject> inputSet; // Assuming inputSet is already initiliazed ... just put it here for clarity
HashSet<Integer> auxSet = new HashSet<Integer>();
List<MyObject> result = new ArrayList<MyObject>();
for (MyObject o : inputSet) {
if (!auxSet.contains(o.getA()) {
auxSet.add(o.getA());
result.add(o);
}
}
HashSet auxSet=新HashSet();
列表结果=新建ArrayList();
用于(MyObject o:inputSet){
如果(!auxSet.contains(o.getA()){
add(o.getA());
结果.加入(o);
}
}
//现在结果包含了您的代表HashSet-inputSet;//假设inputSet已经初始化了……为了清楚起见,请将它放在这里
HashSet auxSet=新HashSet();
列表结果=新建ArrayList();
用于(MyObject o:inputSet){
如果(!auxSet.contains(o.getA()){
add(o.getA());
结果.加入(o);
}
}
//现在结果包含您的代表