java数组排序各位老大帮帮忙谢谢 int [] i={1,3,1,0,5,0,1,2,2};一个数组 把重复在多放前面 个数相同的按从小到大排序排序后的结果 1,0,2,3,5那位老大帮忙解决下啊谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刚写完package com.haojia.test;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;public class T { public static void sort(int[] data) { // 用map记录次数 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < data.length; i++) { if (map.get(data[i]) == null) { map.put(data[i], 1); } else { map.put(data[i], map.get(data[i]) + 1); } } System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序) List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(); for (Entry<Integer, Integer> entry : map.entrySet()) { list.add(entry); } System.out.println(list); // 对值排序 Collections.sort(list, new Comparator<Entry<Integer, Integer>>() { @Override public int compare(Entry<Integer, Integer> e1, Entry<Integer, Integer> e2) { return e1.getValue() < e2.getValue() ? -1 : e1.getValue() > e2 .getValue() ? 1 : 0; } }); System.out.println(list); // 打印结果 for (int i = list.size() - 1; i >= 0; i--) { System.out.print(list.get(i).getKey() + " "); } } public static void main(String[] args) { int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 }; sort(i); }} 这是我System 的结果 相同个数的还是没排序1,3,1,0,5,0,1,2,2,1 0 2 5 3 这样可以了吧就是值相同的时候按键排序package com.haojia.sample;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;/** * 对map的值排序 * * @author July * */public class SortByMapsValues { public static void sort(int[] data) { // 用map记录次数 Map<Integer, Integer> map = new HashMap<Integer, Integer>(); for (int i = 0; i < data.length; i++) { if (map.get(data[i]) == null) { map.put(data[i], 1); } else { map.put(data[i], map.get(data[i]) + 1); } } System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序) List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>(); for (Entry<Integer, Integer> entry : map.entrySet()) { list.add(entry); } System.out.println(list); // 对值排序 Collections.sort(list, new Comparator<Entry<Integer, Integer>>() { @Override public int compare(Entry<Integer, Integer> e1, Entry<Integer, Integer> e2) { return e1.getValue() < e2.getValue() ? 1 : e1.getValue() > e2 .getValue() ? -1 : (e1.getKey() < e2.getKey() ? -1 : e1 .getKey() > e2.getKey() ? 1 : 0); } }); System.out.println(list); // 打印结果 for (Entry<Integer, Integer> entry : list) { System.out.print(entry.getKey() + " "); } } public static void main(String[] args) { int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 }; sort(i); }} 虽然没分啦,但既然写啦,发一下给同龄人吧,我是纯数组流: int [] i={1,3,1,0,5,0,1,2,2,5,3,3,3,6}; int [] count = new int[i.length]; int [] tmp = new int[i.length]; /** * 统计重复个数,tmp[i]对应个数count[i] */ Arrays.sort(i,0,i.length); tmp[0] = i[0]; int index = 0; for(int k=0;k<i.length;k++) { if(i[k] != tmp[index]){ index++; tmp[index] = i[k]; } count[index]++; } /** * 计算出count[j],在count中排第几,存在position[j]中 * 因为count[j],对应tmp[j],便知道了tmp[j]应排位置即position[j] * 于是一个循环,finalData[position[j]] = tmp[j] 便得到解 */ int []position = new int[index+1]; for(int j=0;j<index+1;j++){ for(int k=j+1;k<index+1;k++){ if(count[k]>count[j]){ position[j]++; }else{ position[k]++; } } } int []finalData = new int[index+1]; for(int k=0;k<index+1;k++) { finalData[position[k]] = tmp[k]; } //show for(int k=0;k<finalData.length;k++) { System.out.print(finalData[k]+" "); } SSH2+spring security 求解啊!整合出问题了! 关于在线编辑器支持分页? 求助!!如何通过调用远程服务器访问本地.exe程序?? 好的自学方法 着急死了。一个问题,大家帮忙看看。 用axis 2 code generator 生成服务端代码的问题 jsf中两个页面间如何传递参数? tomcat 5与tomcat 4访问的区别 用URL类取返回的HTML乱码怎么也转换不了 放弃Microsoft,进入J2EE的阵营。请问快速入门的途径 需要一个java公共的转型方法 在 jsp 中使用什么控件可以,调用打开 rar 的程序
package com.haojia.test;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;public class T { public static void sort(int[] data) {
// 用map记录次数
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < data.length; i++) {
if (map.get(data[i]) == null) {
map.put(data[i], 1);
} else {
map.put(data[i], map.get(data[i]) + 1);
}
}
System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序)
List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>();
for (Entry<Integer, Integer> entry : map.entrySet()) {
list.add(entry);
}
System.out.println(list); // 对值排序
Collections.sort(list, new Comparator<Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> e1,
Entry<Integer, Integer> e2) {
return e1.getValue() < e2.getValue() ? -1 : e1.getValue() > e2
.getValue() ? 1 : 0;
}
});
System.out.println(list); // 打印结果
for (int i = list.size() - 1; i >= 0; i--) {
System.out.print(list.get(i).getKey() + " ");
}
} public static void main(String[] args) {
int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 };
sort(i);
}
}
相同个数的还是没排序
1,3,1,0,5,0,1,2,2,
1 0 2 5 3
package com.haojia.sample;import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;/**
* 对map的值排序
*
* @author July
*
*/
public class SortByMapsValues { public static void sort(int[] data) {
// 用map记录次数
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (int i = 0; i < data.length; i++) {
if (map.get(data[i]) == null) {
map.put(data[i], 1);
} else {
map.put(data[i], map.get(data[i]) + 1);
}
}
System.out.println(map); // 把map里的entry加到list里(为了用Collections.sort方法排序)
List<Entry<Integer, Integer>> list = new ArrayList<Entry<Integer, Integer>>();
for (Entry<Integer, Integer> entry : map.entrySet()) {
list.add(entry);
}
System.out.println(list); // 对值排序
Collections.sort(list, new Comparator<Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> e1,
Entry<Integer, Integer> e2) {
return e1.getValue() < e2.getValue() ? 1 : e1.getValue() > e2
.getValue() ? -1 : (e1.getKey() < e2.getKey() ? -1 : e1
.getKey() > e2.getKey() ? 1 : 0);
}
});
System.out.println(list); // 打印结果
for (Entry<Integer, Integer> entry : list) {
System.out.print(entry.getKey() + " ");
}
} public static void main(String[] args) {
int[] i = { 1, 3, 1, 0, 5, 0, 1, 2, 2 };
sort(i);
}
}
int [] i={1,3,1,0,5,0,1,2,2,5,3,3,3,6};
int [] count = new int[i.length];
int [] tmp = new int[i.length];
/**
* 统计重复个数,tmp[i]对应个数count[i]
*/
Arrays.sort(i,0,i.length);
tmp[0] = i[0];
int index = 0;
for(int k=0;k<i.length;k++) {
if(i[k] != tmp[index]){
index++;
tmp[index] = i[k];
}
count[index]++;
}
/**
* 计算出count[j],在count中排第几,存在position[j]中
* 因为count[j],对应tmp[j],便知道了tmp[j]应排位置即position[j]
* 于是一个循环,finalData[position[j]] = tmp[j] 便得到解
*/
int []position = new int[index+1];
for(int j=0;j<index+1;j++){
for(int k=j+1;k<index+1;k++){
if(count[k]>count[j]){
position[j]++;
}else{
position[k]++;
}
}
}
int []finalData = new int[index+1];
for(int k=0;k<index+1;k++) {
finalData[position[k]] = tmp[k];
}
//show
for(int k=0;k<finalData.length;k++) {
System.out.print(finalData[k]+" ");
}