日期:2014-05-20  浏览次数:20584 次

求思路, 需要做一个容器,容器内的元素既需要用上list功能(用于排序),也需要用上Map功能(用于key快速搜索),请问一般大家是如何实现?
求思路, 需要做一个容器,容器内的元素既需要用上list功能(用于排序),也需要用上Map功能(用于key快速搜索),请问一般大家是如何实现?

我现在的做法是,在class内部同时封装了一个ArrayList对象及HashMap对象, 通过代码保证两个对象内的元素是一样的, 需要用上list功能时则调用ArrayList对象的方法,需要map功能则调用HashMap对象的方法.

想找一个更好的方法,谢谢.

------解决方案--------------------
引用楼主 lzheng2001 的帖子:
求思路, 需要做一个容器,容器内的元素既需要用上list功能(用于排序),也需要用上Map功能(用于key快速搜索),请问一般大家是如何实现?

我现在的做法是,在class内部同时封装了一个ArrayList对象及HashMap对象, 通过代码保证两个对象内的元素是一样的, 需要用上list功能时则调用ArrayList对象的方法,需要map功能则调用HashMap对象的方法.

想找一个更好的方法,谢谢.

------解决方案--------------------
探讨
引用楼主 lzheng2001 的帖子:
求思路, 需要做一个容器,容器内的元素既需要用上list功能(用于排序),也需要用上Map功能(用于key快速搜索),请问一般大家是如何实现?

我现在的做法是,在class内部同时封装了一个ArrayList对象及HashMap对象, 通过代码保证两个对象内的元素是一样的, 需要用上list功能时则调用ArrayList对象的方法,需要map功能则调用HashMap对象的方法.

想找一个更好的方法,谢谢.

答:TreeMap容器…

------解决方案--------------------
我有一个方法,不知行不行.

用toArray把ArrayList转换成数组,然后再用HashMap对象的方法.

比如: 
List t = new ArrayList();
t.toArray(T<> a);

Map m = new HashMap();
m.put(key, vaule); //key是查找的索引, vaule是数组的下标.

------解决方案--------------------
一个类是不可能同时实现 List 和 Map 接口的。实现的办法就是写一个新的类。
http://blog.csdn.net/YidingHe/archive/2009/01/05/3711730.aspx
------解决方案--------------------
写个类封装2个list进去,一个存键,一个存值,按值排序