Java集是否保持顺序?一个方法返回一个集合给我,假设数据是有序的,但是在集合上迭代,数据是无序的。有更好的方法来管理这个吗?这个方法需要改变来返回集合以外的东西吗?
正如许多成员建议的那样,使用LinkedHashSet保留收藏顺序。你可以使用这个实现包装你的集合。
SortedSet实现可用于排序顺序,但出于您的目的,请使用LinkedHashSet。
还有文件,
“此实现使其客户端免受哈希集提供的未指定、通常混乱的排序,而不会增加与TreeSet相关的成本。它可用于生成与原始集顺序相同的集的副本,而不管原始集的实现是什么:”
来源:http://docs.oracle.com/javase/6/docs/api/java/util/LinkedHashSet.html
LinkedHashSet就是你所需要的。
Set
界面不提供任何订购保证。
它的子接口SortedSet
表示根据某种标准进行排序的集合。在Java 6中,有两个标准容器实现了SortedSet
。它们是TreeSet
和ConcurrentSkipListSet
。
除了SortedSet
接口,还有LinkedHashSet
类,它记住元素插入集合的顺序,并按该顺序返回其元素。
问题内容: Java Set是否保留顺序?有一种方法将Set返回给我,并且假定数据是有序的,但是遍历Set时,数据是无序的。有没有更好的方法来解决这个问题?是否需要更改方法以返回Set以外的内容? 问题答案: 该Set接口不提供任何订购保证。 它的子接口代表根据某种标准排序的集合。在Java 6中,有两个实现的标准容器。他们是和。 除了SortedSet接口之外,还有类。它记住元素插入到集合中的顺
问题内容: 我正在编写一个Java程序,该程序读取xml文件,进行一些修改并写回xml。 使用标准的Java xml DOM api,不会保留属性的顺序。也就是说,如果我有一个输入文件,例如: 我可能会得到一个输出文件: 是正确的,因为XML规范说order属性并不重要。 但是,我的程序需要保留属性的顺序,以便一个人可以使用diff工具轻松比较输入和输出文档。 一种解决方案是使用SAX(而不是DO
包含由管道分隔的数字列表的文件可以有重复项。需要编写map reduce程序,在原始输入顺序中列出不重复的数字。我可以删除重复项,但不保留输入顺序。
问题内容: Java的foreach循环是否从第一个对象开始,并且以线性方式工作到结束?例如 是否总是先处理字符串“ Zoe”,然后处理“ Bob”等?没有排序发生?我已经对它进行了测试,但没有找到任何东西,但是我需要保证,在文档中找不到任何东西。 问题答案: 是。顺序不变。这适用于Java类集合框架的所有类型的集合,这些集合实现由for循环使用的迭代器接口。如果要对数组进行排序,则可以使用Arr
是否可以在保留其键的同时存储 行? 假设我有下面的虚拟表: 我想存储此表,以便行按排序,并按按递减顺序排序,即: 显然,我可以将它保存为一个新变量,但是我还想将< code>id列作为我的主键。 Arun对“在data.table中设置键的目的是什么?”建议这可以通过巧妙使用< code>setkey来实现,因为它按照键的顺序对data.table进行排序(尽管没有将键设置为降序的选项): 但是,
在编译java类时,如何保持私有方法的顺序?我使用了getDeclaredMethods(),它返回了错误的顺序。