数组中的第一个值 X[0]中存的都是1.2 /1.4/2.5... 这样的值
解决方案 »
- JButton改变Icon的问题
- erorr:void is a invalid type for the variable drawTank
- 求Fibonacci数列:1,1,2,3,5,8,...第40个数的值.
- for (;;)主要用在哪些方面?
- ==========JAVA里HashMap的问题,应该有很多人遇到过或即将遇到==========
- 怎么让Timer暂停一会儿?
- 我想学JAVA,请指教
- 打开保存对话框问题? (请各位帮~~~~~~~~忙啊)
- J2EE 和J2SE 的区别?
- 兄弟们,发现了一个巨好的东西,Together 5.0
- 怎么监听整个JFrame里的鼠标事件??
- 只有三十分了 帮我个忙吧 大家谢谢了
啥都行
用Collections.sort(list,comparator);
在comparator里定义比较规则,也就是取数组的第一个值来比较数组的“大小”。
哈哈 这为朋友 说的和我想的一样! 我刚查了api 没看到那个方法能制定按哪个值比较的呀?
但是这个Comparator<? super T> c 怎么指定为list中存的数组第一个数比较 还是不会。
比较菜 麻烦再说下 多谢
list.add(new String[]{"1.2","1.3","1.4"});
list.add(new String[]{"1.5","1.6","1.7"});
list.add(new String[]{"1.8","1.9","2.0"});
list.add(new String[]{"2.1","2.2","2.3"});
list.add(new String[]{"2.4","2.5","2.6"});
Collections.sort(list,new Comparator<String[]>(){
public int compare(String[] a1, String[] a2) {
NumberFormat nf=NumberFormat.getInstance();
double d1,d2;
try{
d1=nf.parse(a1[0]).doubleValue();
}catch(Exception ex){
d1=Double.MIN_VALUE;
}
try{
d2=nf.parse(a2[0]).doubleValue();
}catch(Exception ex){
d2=Double.MIN_VALUE;
}
return d1>d2?1:-1;
}
});
for(String[] a:list){
System.out.println(a[0]);
}
}
这个麻烦了。你找找看有没有对表达式求值的类啊。应该是有的。Collections.sort(list, new Comparator<String[]>(){
compare(String[] sArray1,String[] sArray2){
return evalue(sArray1[0])-evalue(sArray2[0]);
}
});
evalue(sArray[0])---就是求表达式sArray[0]的值。
Collections.sort(list, new Comparator<String[]>(){
compare(String[] sArray1,String[] sArray2){
return evalue(sArray2[0])-evalue(sArray1[0]);
}
});
我都看不太明白了。 这样就可以 按list中存的数组中的第一个值的大小进行排序啦~~
String sz2[]=new String[2];
for (int i = 0; i < re_list.size() - 1; i++) {
for (int j = i + 1; j < re_list.size()-1; j++) {
String s[]=(String[])re_list.get(i);
String x[]=(String[])re_list.get(j);
if (Float.valueOf(s[0]) < Float.valueOf(x[0])) {
sz1=(String[]) re_list.get(i);
sz2=(String[]) re_list.get(j);
re_list.set(i, sz2);
re_list.set(j, sz1);
}
}
}
List new_list = new ArrayList();
for (int i = 0; i < 25; i++) {
new_list.add(re_list.get(i));
}
我是这样处理的 不过肯定没问题 呵呵 笨方法
re_list是需要处理的list new_list 是取出最大的25个后新生成的list
恩 11楼的代码 返回的是个return d1>d2?1:-1; 就是1或-1 这个没怎么看明白什么意思 呵呵
这位大哥应该是自己写了个比较规则吧!
public class Test{
public static void main(String args[]) throws Exception{
List<String[]> list=new ArrayList<String[]>();
list.add(new String[]{"1.2","1.3","1.4"});
list.add(new String[]{"1.5","1.6","1.7"});
list.add(new String[]{"1.8","1.9","2.0"});
list.add(new String[]{"2.1","2.2","2.3"});
list.add(new String[]{"2.4","2.5","2.6"});
Collections.sort(list, new Comparator<String[]>(){
public int compare(String[] sArray1,String[] sArray2){
double d2=Double.parseDouble(sArray2[0]);
double d1=Double.parseDouble(sArray1[0]);
if(d2>d1){
return 1;
}else if (d1<d2){
return -1;
}
return 0;
}
});
for(String[] ss : list){
System.out.println(Arrays.toString(ss));
} }
}
结果:
F:\java>java Test
[2.4, 2.5, 2.6]
[2.1, 2.2, 2.3]
[1.8, 1.9, 2.0]
[1.5, 1.6, 1.7]
[1.2, 1.3, 1.4]
你想怎么排就怎么排
public int compare(String[] sArray1,String[] sArray2){
double d2=Double.parseDouble(sArray2[0]);
double d1=Double.parseDouble(sArray1[0]);
if(d2>d1){
return 1;
}else if (d1<d2){
return -1;
}
return 0;
}
});这段代码中,Comparator是用匿名内部类实现的,就是new Comparator(){}这种格式。
比较大小的规则,由compare()方法来实现。
<String[]>是泛型,规定了比较的数组类型必须是String[]类型。
谢过bigbug9002、xingqiliudehuanghun和其他几位兄弟帮忙了!多谢!