语法小结
Map
建立map
Map<Character, Integer> left_map = new HashMap<>();
判断两个map是否相等
left_map.equals(right_map)
map放入值
left_map.put(key,value);
map取值
char c = 'a'; left_map.get( c );
map删除a的键值对
left_map.remove( c);
map清空
left_map.clear();
是否包含
map.containsKey( c);
遍历map
方法一
for (Map.Entry<Character, Integer> t : map.entrySet()) {
char c = t.getKey();
}
方法二
Set<Character> keySet = map.keySet();
for (Character char : keySet) {
...}
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println(key + " = " + value);
}
}
getOrDefault
Map.put(ch,(Map.getOrDefault(ch,0)+1));
Map.getOrDefault(Object key, defaultValue):
当Map集合中有这个key时,就使用这个key值;
如果没有就使用默认值defaultValue(key 和value的类型都不限)。
map排序
Map<String, String> map1 = new HashMap<String, String>();
map1.put("a", "3");
map1.put("c", "2");
map1.put("b", "1");
// 根据key排序
List<Map.Entry<String, String>> entryList1 = new ArrayList<Map.Entry<String, String>>(map1.entrySet());
Collections.sort(entryList1, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> me1, Entry<String, String> me2) {
return me1.getKey().compareTo(me2.getKey()); // 升序排序
//return me2.getKey().compareTo(me1.getKey()); // 降序排序
}
});
// 根据value排序
List<Map.Entry<String, String>> entryList2 = new ArrayList<Map.Entry<String, String>>(map1.entrySet());
Collections.sort(entryList2, new Comparator<Map.Entry<String, String>>() {
@Override
public int compare(Entry<String, String> me1, Entry<String, String> me2) {
return me1.getValue().compareTo(me2.getValue()); // 升序排序
//return me2.getValue().compareTo(me1.getValue()); // 降序排序
}
String 、int、char
String 转int
int number;
String number_s;
number = Integer.parseInt(number_s);
int转string
String s = String.valueOf(i);
String s = Integer.toString(i);
String s = "" + i;
char 转int
(1)
int num = Character.getNumericValue(ch);
//char转为int类型
(2)
char c;
// 先把c装成string类型
String stringc = String.valueOf(c);
// 再把string转成int
int intc = Integer.parseInt(stringc);
int 转char
int num = 'a' + 1; char ch = (char) num;
//ch = b 这只是ASCII码的转化
int转String再转char
String转char[]
char[] ch = s.toCharArray();
char拼接成String
char ch;
number_s += String.valueOf(ch);
char[]转化为string
char[] cc;
String.valueOf(cc)
去除String类型str的最后一个字符
str= str.substring(0, str.length() - 1)
返回该位置对应的字符
str.charAt(i)
String大小写转换
.toLowerCase();
//转成小写
.toUpperCase();
//转成大写
String Upstr = str.toUpperCase();//"ABC"
String Lowstr = str.toLowerCase();//"abc"
char 大小写
Character.isLetterOrDigit(ch)
确定指定字符ch是一个字母或数字,是的话则返回true。
Character.toLowerCase(ch)
将字符串转换为小写
set
Set用于存储不重复的元素集合。
定义
Set<String> set = new HashSet<>();
添加元素
set.add(" ");
是否包含元素
set.contains(" ");
删除元素
set.remove(" ");
集合的大小
set.size();
遍历集合:
Set < Integer > set = new HashSet < Integer >() ;
for ( int x : nums ){
if (!set.add (x)){
return true ;
}
List
ArrayList、 LinkedList 和 Vector都实现了List接口,是List的三种实现。
创建ArrayList集合:
List<String> list = new ArrayList<String>();
List list = new ArrayList();
添加功能:add()
list.add("Hello");
修改功能:set()
list.set(0,"my");
获取功能:get()
String element = list.get(0);
是否空:isEmpty()
boolean isEmpty = list.isEmpty();
是否包含:contains()
boolean isContain = list.contains("my");
获取长度:size()
int size = list.size();
删除功能:
list.remove(0);
list.remove("world");
list.clear();
把集合转换成数组 :
String[] strArray = list.toArray(new String[]{});
遍历:
方法一:迭代器
Iterator<String> iterator = list.iterator();
while(iterator.hasNext()){
String next = iterator.next();
System.out.println(next);
}
方法二:for循环
for(String str:list){
System.out.println(str);
}
Stack
Stack<Integer> preNum = new Stack<>();
preNum.add(getPreNum(temp));
preNum.peek()
数组
Arrays.sort(int[] a)
直接对数组进行从小到大的排序
BufferedReader
BufferedReader in = new BufferedReader(new FileReader(“foo.in”));
- read() 方法:读取1个或多个字节,返回一个字符,当读取到文件末尾时,返回-1
- fill() 方法:从底层输入流中填充字符到缓冲区中,此方法会调用StreamDecoder的方法实现字节到字符的转换
- readLine(): 读一行文字并返回该行字符,若读到文件末尾,则返回null:即当遇到换行符(’\ n’),回车符(’\ r’)时会终止读取表示该行文字读取完毕且返回该行文字(不包含换行符和回车符)
- close() 方法:关闭资源释放链接
StringBuffer 方法
StringBuffer
当对字符串进行修改的时候,需要使用 StringBuffer 和 StringBuilder 类。
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
append(String s)
StringBuffer(str).reverse()
元素逆序
delete(int start, int end)
insert(int offset, int i)
replace(int start, int end, String str)
PriorityQueue
比较器
对多个对象进行排序
Comparable和Comparator
set
Set<Integer> set = new TreeSet<>();
class
map+class
set+class
//定义
class Point{
int x;
int y;
public Point(int i,int j){
this.x = i;
this.y = j;
}
}//Point
//使用
Point point = new Point(0,0);
常用Ascii码
a-z : 97 - 122
A-Z : 65 - 90
0-9 : 48 - 57
小方法
递归法求最大公约数
( return b > 0?gcd(b,a%b):a;)
异或
任何数和 0 做异或运算,结果仍然是原来的数,即a⊕0=a。
任何数和其自身做异或运算,结果是 0,即 a⊕a=0。
int single = 0;
for (int num : nums) {
single ^= num;
}
map的啥
return new int[]{hashtable.get(k, v};
str.indexOf(’+’,l)
String.valueOf(amount).contains(“7”))
zong = zong * 10 + (ch-‘0’)
HashMap和HashSet的区别