使用API开发时,我有一个用ColdFusion编写的结构。我需要按字典顺序使用字节排序对结构进行重新排序。
按名称按字典顺序对参数排序sic。如果参数具有相同的名称,则按值排序。
以ColdFusion 9中的结构为例,我如何对其进行重新排序以符合上述要求?JAVA Lib?
谢谢
发布于 2011-09-13 00:46:25
我将把这个作为单独的答案发布,因为我相信我的第一个答案是不正确的……让我们试试这个:
<cfset myStruct = structNew() />
<cfset mystruct["Apple"] = 1 />
<cfset mystruct["Banana"] = 2 />
<cfset mystruct["car"] = 5 />
<cfset mystruct["Tomato"] = 3 />
<cfset mystruct["aardvark"] = 4 />
<cfset Keys = StructKeyArray(myStruct) />
<cfset ArraySort(Keys, "textnocase") />
<cfdump var="#Keys#">这将为您提供一个按字典顺序排序的键数组,忽略所有大小写。StructSort函数按键值排序,而不是按键名排序。
发布于 2011-09-13 00:19:24
对于我的混淆,很抱歉,字典排序和自然排序(至少对于Java String)不是一回事吗?如果是这样的话,看一看Java TreeMap,看看它是否按照您想要的方式工作。
<cfset myStruct = structNew() />
<cfset mystruct["Apple"] = 1 />
<cfset mystruct["Banana"] = 2 />
<cfset mystruct["car"] = 5 />
<cfset mystruct["Tomato"] = 3 />
<cfset mystruct["aardvark"] = 4 />
<cfset myMap = createObject("java","java.util.TreeMap").init(myStruct) />
<cfdump var="#myMap#">发布于 2011-09-13 00:10:02
从技术上讲,你不能对一个结构进行排序,并保证该结构将保持它的顺序。在添加/删除节点时,ColdFusion有一个随意(至少据我所知)重新排序结构的坏习惯。
但是,您可以获得已排序键的列表,然后可以使用该列表遍历结构。使用StructSort方法获取已排序键名的数组。您可以将排序顺序指定为textnocase以获得您的字典顺序(忽略所有大小写)。
然后,您需要进行一些额外的排序,以便在此之后按值获取它们……如果你想要更多的细节,你最好发布一些你已经尝试过的代码,这些代码并不是很有效。
https://stackoverflow.com/questions/7390352
复制相似问题