我有一个Vector of Integer (数据库表的主键);我实现了一个方法,它根据这个主键Integer返回一个字符串。我的问题是,我想把这些字符串放到一个Vector中,它们在Vector中被“排序”。如何实现这种字符串排序?
发布于 2011-07-04 19:13:16
使用以下代码对java-me中的向量进行排序。
public Vector sort(Vector sort) {
Vector v = new Vector();
for(int count = 0; count < e.length; count++) {
String s = sort.elementAt(count).toString();
int i = 0;
for (i = 0; i < v.size(); i++) {
int c = s.compareTo((String) v.elementAt(i));
if (c < 0) {
v.insertElementAt(s, i);
break;
} else if (c == 0) {
break;
}
}
if (i >= v.size()) {
v.addElement(s);
}
}
return v;
}发布于 2011-07-04 17:17:09
您可以使用TreeSet,它将保持字符串的排序顺序,或者在返回它们之前使用类似以下内容:
Collections.sort(yourVector);另一种选择是要求数据库按主键排序。让数据库来完成这项工作。
您的查询可能返回的不只是主键。我想知道为什么您要在String和主键的原始级别上处理事情。我敢打赌,你对对象的思考还不够充分。在有主键的地方,其他数据应该紧随其后。我会将它们封装在一起,并考虑如何对这些对象进行排序。
为什么是Vector?我更喜欢ArrayList,因为默认情况下它不是同步的。更好的性能。
发布于 2011-07-04 17:18:54
您需要通过实现Comparator接口来实现您自己的比较器。
下面这样的代码应该能起到作用:
Collections.sort(vect, new Comparator() {
public int compare(Object a, Object b) {
return ( new Integer(((MyClass) a).getNumber()) ).compareTo( new Integer(((MyClass) b).getNumber()));
}
});摘自here。
https://stackoverflow.com/questions/6569414
复制相似问题