算法刷题细节点总结

1. 关于比较器Comparator

        Queue<Integer> pq=new PriorityQueue<Integer>(new Comparator<Integer>(){
            public int compare(Integer a, Integer b){   // 这里要严格写成和上面的一样
                return b-a;
            }
        });

原来上面的compare方法中参数类型写成了 int, 以为也能编译通过,结果不行,要严格和Comparator中的泛型一致。自定义了比较器后就可以在Collections和Arrays的sort方法对容器中的元素进行排序,默认是升序排序的。

2. 关于集合

(1) 如何遍历map?

 可以参考这篇博文:https://www.cnblogs.com/imzhj/p/5981665.html

 感觉最好记的方法是这个:

Map<String, String> map = new HashMap<String, String>();
for (Entry<String, String> entry : map.entrySet()) {
    entry.getKey();
    entry.getValue();
}

(2) set集合的增删改元素方法和List集合是一样的吗?remove方法的一个疑问

 一样的,都是 add 和 remove 方法,只不过list的remove方法能按照indxex来删,而set只能按照Object来删。这里有一个长久以来的疑问是如果List集合中放入的是int型元素的话,如果此时使用remove方法,传入int的 话是按照索引来删除元素还是按照int的值来删除元素的呢?

测试结果是还是按照索引来删,如果使用 (Integer)3 这种方式将int包装为Integer的话就会按照值去删。

(3) set和list集合怎么和数组互转?

参考: https://blog.csdn.net/my_precious/article/details/53010232

(4) 关于PriorityQueue的用法

参考:https://blog.csdn.net/u013309870/article/details/71189189

很有用的数据结构,可以用它来实现堆。

3. 关于字符和字符串

(1) 相互转换

 int转String直接加""即可,String转int需要用到Integer.parseInt()方法。

 String转char数组直接调用toCharArray()方法,

(2) 快速逆转字符串

 String reversed = new StringBuilder(s).reverse().toString()

猜你喜欢

转载自www.cnblogs.com/f91og/p/9629645.html
今日推荐