1、为什么要在java里排序和范围查找,大批量数据效率很低,放在数据库里做排序和范围查找是明智的
2、真要java的话
(1)排序用Collectionssort();方法
(2)范围查找可以遍历判断查找
乱码问题,需要转码,在jsp页面最上面把gb2312改成utf-8,并且在servlet里面responsesetcharcacterencoding("utf-8"),requestsetcharcacterencoding("utf-8"),
如果按照数据库自己排序,会按照中文的拼音进行排序(A-Z)有实验过。如果要实现楼主这样的功能。我建议,增加两个字段,分别是等级(level,最好是约定一个与A级B级对应的数字,如A级填1)、班级号(classno,班级 填,1,2,3代表1班2班3班),两个字段就可以确定一个班级。然后SQL语句为 select 查询的内容 from 表名 order by level,classno (先按level,后按classno排序)
自己写排序方法,效率最高,因为sort只有一个这样的排序,在C#里面还有一个倒置的方法,在java里面没有,如果我们想使用sort,还需要自己写一个倒置的算法,这样算下来就没有自己写这个排序算法效率高了
呵呵,另外事实上算法这个问题的效率高低,并不是绝对的~~
sort用的是一种优化的快速排序
排序算法可能根据你的数据量的大小来判断效率高低,我们常说的算法的高低,比如我们说A排序算法比B排序算法的效率高,这是在所有的情况下,也就是说在大数统计的情况下发生
并不见得,我对任意的一组排序A的效率都比B的效率高?明白不?
第一种方法,就是list中对象实现Comparable接口,代码如下:
public class Person implements Comparable<Person> {
private String name;
private Integer order;
/
@return the name
/
public String getName() {
return name;
}
/
@param name
the name to set
/
public void setName(String name) {
thisname = name;
}
/
@return the order
/
public Integer getOrder() {
return order;
}
/
@param order
the order to set
/
public void setOrder(Integer order) {
thisorder = order;
}
@Override
public int compareTo(Person arg0) {
return thisgetOrder()compareTo(arg0getOrder());
}
}
public static void main(String[] args) {
List<Person> listA = new ArrayList<Person>();
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
p1setName("name1");
p1setOrder(1);
p2setName("name2");
p2setOrder(2);
p3setName("name3");
p3setOrder(3);
listAadd(p2);
listAadd(p1);
listAadd(p3);
Collectionssort(listA);
for (Person p : listA) {
Systemoutprintln(pgetName());
}
}
第二种方法,就是在重载Collectionssort方法,代码如下:
public class Person {
private String name;
private Integer order;
/
@return the name
/
public String getName() {
return name;
}
/
@param name
the name to set
/
public void setName(String name) {
thisname = name;
}
/
@return the order
/
public Integer getOrder() {
return order;
}
/
@param order
the order to set
/
public void setOrder(Integer order) {
thisorder = order;
}
}
public static void main(String[] args) {
List<Person> listA = new ArrayList<Person>();
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
p1setName("name1");
p1setOrder(1);
p2setName("name2");
p2setOrder(2);
p3setName("name3");
p3setOrder(3);
listAadd(p2);
listAadd(p1);
listAadd(p3);
Collectionssort(listA, new Comparator<Person>() {
public int compare(Person arg0, Person arg1) {
return arg0getOrder()compareTo(arg1getOrder());
}
});
for (Person p : listA) {
Systemoutprintln(pgetName());
}
}
两次执行的结果都是:
name1
name2
name3
以上就是关于JAVA问题 ,1. LinkedList 里面怎么排序 2. 怎么范围查找全部的内容,包括:JAVA问题 ,1. LinkedList 里面怎么排序 2. 怎么范围查找、java如何实现mysql数据库有中文字段中文排序、java 中文一,二,到十,怎么排序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)