我用HashSet装东西结果顺序每次都不一样
请问这样的问题怎么解决呢???
1.是自己建一个类extends这些类
2.还是有好的现成的开源的东东来弄呢....
3.还是用其它什么办法
请问使每次的SET里结果顺序都一样
麻烦大家看一看
[b]问题补充:[/b]
具体情况是:
我用List装的东西,结果输出来有重复的,结果我就用HashSet装
[b]问题补充:[/b]
数据量不大的,只是装一些功能模块,有200条就不得了...但是我想用Set,因为我LIST经常用....你有好方法没?
[b]问题补充:[/b]
怎么用啊,不会要自己建一个类去extends HashSet 再implements 那个排序的东东吧....
[code="java"]
package com.wzj;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
get(int idx)/remove(int idx) 为按加入hashMap的顺序号(index) 来取得/删除 数据
*/
public class IndexHashMap extends HashMap {
private static final long serialVersionUID = 1L;
private List list=new ArrayList();
public Object put(Object key, Object value) {
if (!containsKey(key)){
list.add(key);
}
return super.put(key, value);
}
public Object get(int idx){
return super.get(getKey(idx));
}
public int getIndex(Object key){
return list.indexOf(key);
}
public Object getKey(int idx){
if (idx>=list.size()) return null;
return list.get(idx);
}
public void remove(int idx){
Object key=getKey(idx);
removeFromList(getIndex(key));
super.remove(key);
}
public Object remove(Object key) {
removeFromList(getIndex(key));
return super.remove(key);
}
public void clear() {
this.list = new ArrayList();
super.clear();
}
private void removeFromList(int idx){
if (idx=0) {
list.remove(idx);
}
}
}
[/code]
引自http://fins.iteye.com/blog/32242
说说具体的情况把,可以使用数组或者list
哦,那就放之前遍历判断一下,如果数据量不大的话应该不好有性能问题
Set就是不常用。用Set可以实现集合排序到达目的。麻烦
用TreeSet替换。
HashSet是不排序的
TreeSet是排序的