Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.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 HashSet的分区中选择唯一的代表_Java_Set_Hashset - Fatal编程技术网

如何从Java 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 =

我想知道一种实现我正在尝试的场景的方法

我有一个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 = 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);
}
}
//现在结果包含您的代表