首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何按字典顺序使用字节排序对结构进行重新排序?

如何按字典顺序使用字节排序对结构进行重新排序?
EN

Stack Overflow用户
提问于 2011-09-12 23:33:34
回答 3查看 1.3K关注 0票数 1

使用API开发时,我有一个用ColdFusion编写的结构。我需要按字典顺序使用字节排序对结构进行重新排序。

按名称按字典顺序对参数排序sic。如果参数具有相同的名称,则按值排序。

以ColdFusion 9中的结构为例,我如何对其进行重新排序以符合上述要求?JAVA Lib?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-09-13 00:46:25

我将把这个作为单独的答案发布,因为我相信我的第一个答案是不正确的……让我们试试这个:

代码语言:javascript
复制
<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函数按键值排序,而不是按键名排序。

票数 5
EN

Stack Overflow用户

发布于 2011-09-13 00:19:24

对于我的混淆,很抱歉,字典排序和自然排序(至少对于Java String)不是一回事吗?如果是这样的话,看一看Java TreeMap,看看它是否按照您想要的方式工作。

代码语言:javascript
复制
<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#">
票数 3
EN

Stack Overflow用户

发布于 2011-09-13 00:10:02

从技术上讲,你不能对一个结构进行排序,并保证该结构将保持它的顺序。在添加/删除节点时,ColdFusion有一个随意(至少据我所知)重新排序结构的坏习惯。

但是,您可以获得已排序键的列表,然后可以使用该列表遍历结构。使用StructSort方法获取已排序键名的数组。您可以将排序顺序指定为textnocase以获得您的字典顺序(忽略所有大小写)。

然后,您需要进行一些额外的排序,以便在此之后按值获取它们……如果你想要更多的细节,你最好发布一些你已经尝试过的代码,这些代码并不是很有效。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7390352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档