1.输出数组中出现次数大于length/2的元素。
package basic.collection;
import java.util.HashMap;
import java.util.Map;
/**
* author tanbin
* 将数组中出现次数大于 length/2 的数打印出来
* Created by Administrator on 2016/12/11.
*/
public class HashMap1 {
public static void main(String[] args){
int[] array = {2,1,2,3,5,6,9,8,7,6,6,4,3,6};
Map<Integer,Integer> hashMap = new HashMap<Integer,Integer>();
for(int i=0;i<array.length;i++){
if(hashMap.containsKey(array[i])){
int temp = hashMap.get(array[i]);
hashMap.put(array[i],temp+1);
}else{
hashMap.put(array[i],1);
}
}
for(int key : hashMap.keySet()){
System.out.println(key+":"+hashMap.get(key));
}
}
}
2.给定一个数组,按元素出现的次数排序。我们用hasmMap来做,Map接口是不可以排序的,但是它的keySet可以。我们使用Collections的sort()方法排序。
package basic.collection;
import java.util.*;
/**
* Created by Administrator on 2016/12/12.
*/
public class HashMap2 {
public static void main(String[] args){
int[] data = {3,6,4,5,4,1,3,4,8,6,2,8,5};
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
int tmp=0;
for(int i=0;i<data.length;i++){
if(map.containsKey(data[i])){
tmp = map.get(data[i]);
map.put(data[i],tmp+1);
}else{
map.put(data[i],1);
}
}
List<HashMap.Entry<Integer,Integer>> list = new ArrayList<HashMap.Entry<Integer,Integer>>(map.entrySet());
Collections.sort(list, new Comparator<HashMap.Entry<Integer,Integer>>(){
@Override
public int compare(HashMap.Entry<Integer,Integer> o1, HashMap.Entry<Integer,Integer> o2) {
return (o2.getValue()-o1.getValue());
}
});
for(HashMap.Entry<Integer,Integer> entry : list){
System.out.println("key:"+entry.getKey()+"-Value:"+entry.getValue());
}
}
}
- ArrayList 就是一个可扩展的数组,所以删改比较慢。提供了ensureCapacity(int N)的方法,如果事先知道大小的话指定大小,就可以减少自动的扩容,自动每次增加1.5倍。
LinkedList 是用双向列表存的
comprarable和comparator 接口,都能用在Arrays.sort()和Collection.sort() 方法中,用来自定义比较的标准。
先整理到这