1. Arrays
、Collections
① Arrays.sort()
方法主要是针对各种数据类型(基本数据类型和引用对象类型)的数组元素排序
引用对象类型数组的排序sort()
方法要用到接口Comparator<T>
,对其排序内部的比较函数compare()
进行重写,以便于我们按照我们的排序要求对引用对象数组极性排序,默认是升序排序,但可以自己自定义成降序排序。
② Arrays.toString
用于打印数组
③ Arrays.asList() 详解
④ java.util.Collections
中的静态方法的Collections.sort()
主要是针对集合框架中的动态数组,链表,树,哈希表等( ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap )进行排序。
java中排序函数sort()使用,Arrays.sort()和Collections.sort()
2. 优先队列PriorityQueue
例题——703. 数据流中的第K大元素
//基本用法
class KthLargest {
//优先队列:每次取出的元素都是队列中权值最小的
PriorityQueue<Integer> queue;
int k;
public KthLargest(int k, int[] nums) {
int len = nums.length;
queue = new PriorityQueue<>(k);
this.k = k;
for(int i=0;i<len;i++){
add(nums[i]);
}
}
public int add(int val) {
//回队列头部的元素,如果队列为空,则返回NULL
if(queue.size()<k) {
queue.add(val);
} else if (val>queue.peek()){
queue.poll();
queue.add(val);
}
return queue.peek();
}
}
//通过传参Comparator创建优先队列
PriorityQueue<Map.Entry<Character, Integer>> maxHeap = new PriorityQueue<>(
(e1,e2)->{return e2.getValue()-e1.getValue();});
3. HashMap<>()
①常用方法
entrySet()
方法返回一个与哈希映射具有相同元素的集合
keySet()
方法返回一个key的集合(Set)
②遍历HashMap<>()
的四种方法:
public static void main(String[] args) {
Map<String,String> map=new HashMap<String,String>();
map.put("1", "value1");
map.put("2", "value2");
map.put("3", "value3");
map.put("4", "value4");
//第一种:普通使用,二次取值(性能差)
for(String key:map.keySet()){
System.out.println("Key: "+key+" Value: "+map.get(key));
}
//第二种(性能比第一种好,一次取值)
Iterator map1it=map.entrySet().iterator();
while(map1it.hasNext()){
Map.Entry<String, String> entry=(Entry<String, String>) map1it.next();
System.out.println("Key: "+entry.getKey()+" Value: "+entry.getValue());
}
//第三种:推荐,尤其是容量大时
for(Map.Entry<String, String> entry: map.entrySet()){
System.out.println("Key: "+ entry.getKey()+ " Value: "+entry.getValue());
}
//第四种
for(String v:map.values()){
System.out.println("The value is "+v);
}
}