用java写算法,开始记录的第一周,积累 -> 沉淀。
1、补常用容器的使用,比较完整的常见容器。java 有哪些常用容器(集合)? - Java面试题。
2、补string与char一些处理、对原生数组与包装数组的使用。
3、本周写3天每日一题+2场比赛。
4、排序
1、补常用容器的使用。
Map,HashMap<>();
Map<String,Integer> map = new HashMap<>(); //<>存类型,()存容量。
map.constainKeys();
map.constainValues();
map.put(k,y);
map.get(k);
map.getOrDefault(x,y)
map.remove(k);
Iterator<Map.Entry<String,Integer>>iter = map.entrySet().iterator();
while(iter.hasNext()){
Map.Entry<String,Integer>> i = iter.next();
String key = iter.key();
Integer value = iter.value();
}
Set,HashSet<>();
Set<Integer> set = new HashSet<>();
set.add();
set.contains();
set.remove();
TreeSet<>();
TreeSet<Integer> set = new TreeSet<>();
set.ceiling(); //大于等于
set.floor(); //小于等于
set.higher(); //大于
set.lower(); //小于
Queue,LinkedList<>(); 用作queue时候offer、poll。用作队列时使用:add、remove。
Queue<String> q = new LinkedList<>();
q.offer();
q.poll();
q.peek();
q.isEmpty();
PriorityQueue
class People {
Integer age;
String name;
}
static Comparator<People> cmp = new Comparator<People>() {
@Override
public int compare(People o1, People o2) {
if (!o1.age.equals(o2.age)) {
return o1.age - o2.age; //减法表示,小的在前面
}
return o1.name.compareTo(o2.name);
}
};
PriorityQueue<People> q = new PriorityQueue<People>(cmp);
PriorityQueue - (offer/poll)
2、补String与char一些处理。
String的常见问题:
1、直接复制的话,会改变值,即便是放在了容器中,存的是地址,所以需要new String(x);
2、建立一个String,需要StringBuilder sb,sb.append(),一点点加,然后sb.toString();
3、String 换位置,可以转换为char[];
4、sb.charAt(index),直接用sb拿到对应位置的char。new StringBuilder(String);
5、sb.insert(x,y),在x位置插入y这个字符/字符串。
6、string.replace(x,x);string.find()==-1表示找不到。string.erase(x)
7、先用stirng.contains(str)。string.indexOf(x)。x输入一个字符串,可以拿到string包含这个字符串的开头,string.substring(x,y)。可以将[x,y]的字符串均获取到。
转换:
char[] charList = String.toCharArray();
String x = String.valueof(charList);
char r = target.charAt(1);
String = []
二维数组的使用
int[][] = {{1,2},{6,7,8,9},{5}}
可以二维遍历用,判断某个状态转换成某个状态也可以。
4、排序最简单,使用Arrays.sort(nums);