使用API进行开发,我在ColdFusion中有一个结构。我需要按字典顺序使用字节顺序对结构进行重新排序。
“按字典顺序排序参数[sic](字节排序,标准排序,不自然或不区分大小写)。如果参数名称相同,则按值排序。”
采用ColdFusion 9中的结构,我如何重新排序以符合上述要求? JAVA Lib?
谢谢
答案 0 :(得分:5)
我将把这个作为一个单独的答案发布,因为我相信我的第一个是不正确的......让我们试试这个:
<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
函数对键值进行排序,而不是键名。
答案 1 :(得分:3)
很抱歉我的困惑,但不是词典排序和自然排序(至少与Java Strings)相同的事情?如果是这样,请查看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#">
答案 2 :(得分:2)
您无法在技术上对结构进行排序,并保证结构将维持其顺序。当你添加/删除节点时,ColdFusion有一个任意(至少就我所知)重新排序结构的坏习惯。
但是,您可以获取已排序键的列表,然后可以使用它来遍历结构。使用StructSort方法获取已排序的键名称数组。您可以将排序顺序指定为textnocase
以获取字典顺序(忽略所有大小写)。
然后你需要做一些额外的排序,以便在那之后按价值获得...如果你想要更多的细节,你最好发布一些你已经尝试过的代码不太合适的代码。