我知道LinkedHashMap有一个可预测的迭代顺序(插入顺序).是否Set通过返回LinkedHashMap.keySet()和Collection返回的LinkedHashMap.values()也维持这种秩序?
我想将一个键值对添加到哈希表(或任何其他集合)中,但必须维护插入顺序.我怎样才能做到这一点?
就像我将1添加为键"一"作为值,2作为键和"两"作为值.
输出应该是:
1:one
2:two
Run Code Online (Sandbox Code Playgroud) 我得到类似的数据
{"ABC的员工1","ABCX"},{"ABC的员工2","ABCY"},{"ABC的员工3","ABCZ"}
从数据库到RefCursor.
我有一个案例,我需要保留从数据库中读取数据的顺序.由于我的数据是一种"键值",我想到了使用了一个Map有序的实现.因此选择了LinkedHashMap
//defined as a static map inside a common utlity class
public class Common{
public static final LinkedHashMap<String, String> empMap = new LinkedHashMap<String, String>();
}
//rs is the resultset
if (rs != null) {
while (rs.next()) {
key = rs.getString("name_text");
value = rs.getString("id");
Common.empMap.put(key, value);
}
}
Run Code Online (Sandbox Code Playgroud)
我必须按照从数据库(Cursor)检索它的顺序将密钥传递给客户端.
List<String> empList = new ArrayList<String>(Common.empMap.keySet());
Run Code Online (Sandbox Code Playgroud)
keySet() - 文档说"返回此映射中包含的键的Set视图.该集由映射支持,因此对映射的更改将反映在集合中,反之亦然"
我所期待的是,由于ArrayList也是一个有序集合,我应该以与检索/插入密钥相同的方式获取密钥Map.
当我做一个示例测试程序时,我得到了预期的结果.
public class LinkedMap {
public static void main(String[] args) { …Run Code Online (Sandbox Code Playgroud) 我有以下代码,我希望能够从 Map 中获取第一个和最后一个元素并将每个元素分配给一个字符串。
String result1stElement = null;
String resultLastElement = null;
Map<String, String> result = new HashMap<String, String>();
result = myModel.getSampleResults();
Run Code Online (Sandbox Code Playgroud)
有任何想法吗。
提前致谢。