我试图写一个函数来排序一个对象集合。由于对象都是相同的类型(相同的用户定义类),因此它们的属性集是相同的。是否有可能(通过代码)发现对象的属性,以便将集合放在一个二维数组中,每行代表一个对象,每列代表它的一个属性?
另一种解决方案是将集合中的每个对象复制到对象数组中,并根据它们的一个属性对它们进行排序,该属性的名称作为字符串传递给函数。但是我不知道如何使用作为字符串传递的属性名来指向对象的属性。
对于集合,最好按键进行排序(这就是它们的作用)--但如果您没有键列表(丢失了键!):
'Give an input "Data As Collection"
Dim vItm As Variant
Dim i As Long, j As Long
Dim vTemp As Variant
For i = 1 To Data.Count – 1
For j = i + 1 To Data.Count
If CompareKeys(Data(i).myMemberKey, Data(j).myMemberKey) Then
'store the lesser item
vTemp = Data(j)
'remove the lesser item
Data.Remove j
're-add the lesser item before the greater Item
Data.Add vTemp, , i
End If
Next j
Next i
使用您自己的CompareKey函数,如果UDT成员变量彼此为>、<或0,该函数将返回true或false。您必须删除和重新添加的原因是因为您不能“交换”VB6/VBA集合对象中的内部成员。
祝你好运
编辑:
Result = CallByName(MyObject, "MyProperty", vbGet)
当我对它进行降序排序时,它应该首先显示Parent3,因为它有一个Z。这是我当前的hql,它得到了1>2>3的错误结果: 如果没有distinct,尽管它选择了多个相同的父级,但它仍然很好。 我有一个模型设置如下: 编辑:在集合中按HQL顺序对其进行排序,尽管当双亲具有相同的children.name值时,它不会比较下一个可能的值。即。 如果Parent1有孩子abba,zeon Parent2有
问题内容: 假设我有两个类CLassA和CLassB。它们有一个共同的属性,例如每个类拥有的元素数量。 我如何从ClassA和CLassB的对象创建一个集合,并按该属性排序(降序升序无所谓)? 我收集了一个类型,但是当我尝试实现Comparable Interface时,我无法使用该方法(例如,获取返回元素nr的get)。 我有什么解决方案? 谢谢你的帮助! 问题答案: 实际上,如果要将它们放在同
问题内容: 例如具有以下代码: 我如何排序此json这样- 我用ID对用户进行了排序。. 我不知道如何在javascript中执行此操作。 问题答案: 首先,这 不是 JSON。这是一个JavaScript对象文字。JSON是数据的 字符串表示 形式,它恰好非常类似于JavaScript语法。 其次,您有一个对象。他们没有排序。不能保证元素的顺序。如果要保证顺序,则 需要 使用数组。这将需要您更改
问题内容: 如果我有一个简单的字符串列表: 我可以对它进行排序: 但是假设我有一个Person类: 并列出: 我想有时按名称,有时按年龄,有时按国家对它进行排序。 最简单的方法是什么? 我知道我可以实现Comparable接口,但这似乎限制了我只能通过一个特定的属性对其进行排序。 问题答案: 可以使用自定义比较器调用Collections.sort。并且该比较器可以实现为允许以不同的排序顺序进行排
本文向大家介绍JAVA对list集合进行排序Collections.sort(),包括了JAVA对list集合进行排序Collections.sort()的使用技巧和注意事项,需要的朋友参考一下 对一个集合中的对象进行排序,根据对象的某个指标的大小进行升序或降序排序。代码如下: 进行降序排列 进行升序排列 经过测试发现,只需要把两个对象的位置调换一下即可升序或降序。 如果指标相同,根据多个指标进行
问题内容: 我正在使用以下映射: 文件范例: 我的问题是如何检索此文档并按“日期”对嵌套对象“注释”进行排序?结果: 问题答案: 您需要在inner_hits上对进行排序。这将为您提供所需的输出 我使用的源过滤得到的只有作为将被检索里面,但你能避免,如果你想 是5,因为默认值为3,并且在给定的示例中我们有4个对象。 希望这可以帮助!