1.排序
1.1.快速排序
public static void quickSort(int[] nums, int left, int right){
if(left >= right){ //1
return;
}
int i = left - 1;
int j = right + 1;
int x = nums[left];//2
while(i < j){//3
while(nums[++i] < x);
while(nums[--j] > x);
if(i < j){
int t = nums[i];
nums[i] = nums[j];
nums[j] = t;
}
}
quickSort(nums, left, j);
quickSort(nums, j+1, right);//4
}
2.HashMap
2.1.遍历
for(Map.Entry<String,Integer> entry : map.entrySet()){
System.out.print(entry.getKey()+" "+entry.getValue());
System.out.println();
}
3.优先队列
HashMap<String, Integer> dic = new HashMap<>();
for(int i = 0; i < dictionary.size(); i++){
if(judge(s, dictionary.get(i))){
dic.put(dictionary.get(i), dictionary.get(i).length());
}
}
System.out.println("排序前");
for(Map.Entry<String,Integer> entry : dic.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
//自定义排序
PriorityQueue<Map.Entry<String, Integer>> pq = new PriorityQueue<>(new Comparator<Map.Entry<String, Integer>>() {
int i = 0;
@Override
public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
if(o2.getValue() != o1.getValue()){
return o2.getValue()-o1.getValue();//由大到小排序
}else{
for (i = 0; i < o2.getValue(); i++) {
if(o2.getKey().charAt(i) != o1.getKey().charAt(i)){
break;//按照字母序排列
}
}
return o1.getKey().charAt(i) - o2.getKey().charAt(i);//由小到大排序
}
}
});
for(Map.Entry<String, Integer> entry : dic.entrySet()){
pq.offer(entry);
}