【Java刷题笔记】
哈希表的一些类型HashmapInteger,Innterger map new Hashmap();Set String keyset map.Keyset();for (Map.EntryInteger, Integer entry : lights.entrySet()) {if (entry.getValue() 1) {System.out.println(entry.getKey());break;}}Scanner类的一些方法1.nextInt(): 读取一个int类型的整数。2.nextLong(): 读取一个long类型的整数。3.nextShort(): 读取一个short类型的整数。4.nextByte(): 读取一个byte类型的整数。5.nextFloat(): 读取一个float类型的浮点数。6.nextDouble(): 读取一个double类型的浮点数。7.nextBigInteger(): 读取一个BigInteger类型的整数大整数。8.nextBigDecimal(): 读取一个BigDecimal类型的浮点数高精度浮点数。9.另外Scanner类还有一个next()方法可以读取下一个字符串以空白字符为分隔。10.以及nextLine()方法读取一行以换行符为结束。11.Java里没有读取字符的方法小写字母和大写字母的转换方法根据ASC||码进行转换在ASC||码中大写字母和小写字母的编码是连续的并且小写字母的ASCII码比对应的大写字母大32。例如A’的ASCII码是65a’的ASCII码是9797-6532。下面是一段讲小写字母转为大写字母的代码c是一个小写字母。char result (char)(c - 32);计算c - 32这是一个整数运算因为char类型在运算时会自动提升为int得到的是大写字母的ASCII码整数。使用(char)进行强制类型转换将整数转换为对应的字符。用Character类里的方法Character.toUpperCase( c )整型数字转为字符串的方法String.valueOf(int i)方法int num 123;String str String.valueOf(num);Integer.toString(int i)int num 123;String str Integer.toString(num);空字符拼接int num 123;String str “” num;使用StringBuilderint num 123;StringBuilder sb new StringBuilder();sb.append(num);String str sb.toString();字符串转为整型数字的方法String str “123”;Integer num Integer.valueOf(str); // 返回Integer对象int primitiveNum num.intValue(); // 如果需要基本类型可以拆箱数字字符转为整型数字的方法char b ‘7’int a b-‘0’;a就是7格式化输出%s: 字符串%c:字符类型%d: 十进制整数% ld十进制long int类型%o: 八进制整数%x:十六进制整数%t: 日期时间与后缀字母配合如%tY表示四位年份%n: 换行符平台无关%b // 布尔值%f // 浮点数默认6位小数%.2f // 保留2位小数System.out.printf(“%02d:%02d\n”, hour, minute);% 表示格式说明的开始。0 表示用0来填充空白处。2 表示最小宽度为2个字符。d 表示将整数格式化为十进制整数。字符串变量转型为字符数组String.toCharArray();Stringlinescan.next();char[]arr2line.toCharArray();整型数字和浮点型数字乘除法int a 5;int b 4;double c a / b; // 这里a和b都是整数所以执行整数除法结果为1然后将1转换为double类型赋值给c所以c是1.0System.out.printf(“%.2f”,c); // 输出1.00nt a 5;double b 4; // 这里b是double类型double c a / b; // 这里a是intb是double根据Java的自动类型转换规则会将a转换为double然后执行浮点数除法所以是5.0/4.01.25System.out.printf(“%.2f”,c); // 输出1.25字符数组转变为字符串字符数组chString name new String(ch);name就是有字符数组ch转变为的一个字符串变量char[]arr2line.toCharArray();arr2[line.length()-1]X;StringrightnewString(arr2);整型数字转变为字符yu是一个单个整型数字变量charch1(char)(0yu);这个方法与字符转为数字的方法类似但是这里整型数字转变为字符需要强制转型并且是加上一个‘0’。BigDecimal和BigIntegerBigInteger支持任意长度的整数。BigDeciaml支持任意精度的浮点数可以用它进行精确的计算。BigInteger和BigDecimal的创建1.new BigXxx()2.BigXxx.valueOf()3.Scanner对象.nextBigXxx();方法一的代码BigIntegerbinewBigInteger(11111111111111111111111111111111111111111111111111111111);System.out.println(bi);BigDecimalbdnewBigDecimal(314124121423114.4131234214234234);System.out.println(bi);.//下面错误示例BigDecimalbdnewBigDecimal(314124121423114.413123421423423);//这是错误的这个括号的方法里面只能以字符串数字的类型添加不可以直接以数字的形式添加如 BigDecimal bd new BigDecimal(314124121423114.413123421423423);这是错误的方法二的代码BigIntegerbi1BigInteger.valueOf(31415926);BigIntegerbi2BigInteger.valueOf(314159265358977932L);//数据末尾加一个L数据就变成了long型的数据其范围比int类型的更大System.out.println(bi1);System.out.println(bi2);BigDecimalbd1BigDecimal.valueOf(31415926535897932.6846);System.out.println(bd1);//bd1的输出并不会把它的全部数字输出而是只会输出一部分因为同样double的数字位数有限制超过的部分不会输出//在这里只输出31415926535897932这个方法有所限制当括号的数据要么是int要么是long数据范围有限制。方法三的代码ScannerscannewScanner(System.in);BigDecimalascan.nextBigDecimal();BigDecimal和BigInteger里的方法对象.add(),subtract(),multiple(),divide(),remainder(),divideAndRemainder,max(),min,compareTo();1.这些方法对应加减乘除求余数除和求余数求最大值求最小值比较2.BigXxx对象.intValue(),doubleValue()这些方法是将BigXxx的数据转为int型和double型但是BigXxx的数据不能超过int和double的范围3.BigDecimal对象.divide(BigDecimal,roundingMode),RoudingMode.HALF_UP四舍五入BigIntegerbi0BigInteger.valueOf(31415926535897932L);BigIntegerbiBigInteger.valueOf(31415926535897932L);BigIntegerbi1BigInteger.valueOf(31415926535897932L);BigDecimalbd1BigDecimal.valueOf(31415926535897932.6846);BigIntegerbi2bi.subtract(bi1);BigIntegerbi3bi.add(bi1);//bi2的结果就是bi加上bi1,bi3的结果就是0BigIntegerbi4bi.multiply(BigInteger.valueOf(2));BigIntegerbi5bi.divide(BigInteger.valueOf(2));BigIntegerbi2rbi.remainder(BigInteger.valueOf(2));BigInteger[]bi3rbi.divideAndRemainder(BigInteger.valueOf(2));//这个方法的返回值是一个数组第一个数是商第二个数是余数System.out.println(bi3r[0]);System.out.println(bi3r[1]);System.out.println(bi.max(bi1));System.out.println(bi.min(bi1));//这里会输出bi和bi1中的最大和最小的一个数System.out.println(bi.compareTo(bi1));System.out.println(bi1.compareTo(bi2));System.out.println(bi0.compareTo(bi2));//第一个输出-1第二个输出1第二个输出0System.out.println(bi.intValue);System.out.println(bd.doubleValue);//这两个输出的都不是正确的bi,bd因为bibd的数据超过int 和 double的范围。BigDecimalbdnewBigDecimal(314124121423114.4131234214234234);System.out.println(bd.divide(BigDecimal.valueOf(10),RoundingMode.HALF_UP));//默认保留两位小数System.out.println(bd.divide(BigDecimal.valueOf(10),3,RoundingMode.HALF_UP));//这里3规定了保留小数的位数这些方法的括号里的数据类型必须是BigIntegerjava里的Math类一常量Math.PI//圆周率ΠMath.E//自然对数e二取整相关Math.abs(a);//取绝对值Math.max(a,b)//取最大值Math.min(a,b)//取最小值Math.round(x)//四舍五入返回longMath.floor(x)//向下取整Math.ceil(x)//向上取整//示例Math.floor(3.9)//向下取整3Math.ceil(3.1)//向上取整4三幂开方对数Math.pow(a,b);//a的b次方Math.sqrt(x);//平方根Math.cbrt(x);//立方根Math.exp(x);//e的x次方Math.log(x);//自然对数LnMath.log10(x);//以10为底的对数三角函数Math.sin();Math.cos();Math.tan();Math.toRadians();//角度to弧度Math.toDegrees();//弧度to角度substringsubstring(int beginIndex)从 beginIndex 开始截取到字符串末尾。substring(int beginIndex, int endIndex)截取从 beginIndex 到 endIndex - 1 范围的字符含头不含尾。字符串下表从0开始遍历Stringlineabcgefgh;Stringline2line.substring(4)//line2 efghArrays.sort();方法Arrays.sort(a); 的作用是将数组 a 中的元素按从小到大升序排序。例如如果 a 原来是 [5, 2, 8, 1]执行 Arrays.sort(a); 之后a 就变成了 [1, 2, 5, 8]。可以用 Arrays.sort() 的常见情况蓝桥杯第16届JavaA组第4题基本类型数组int[], long[], double[] 等 → 默认升序排序。对象数组String[], Integer[] 等 → 默认按元素的自然顺序排序比如字符串按字典序。需要自定义排序 → 传入 Comparator例如按长度、按某个属性降序等。Arrays.sort(computer, 0, n); 中三个参数的作用分别是computer→ 要排序的数组这里是存放显示器或插座坐标的 long[] 数组。0→ 排序的起始索引包含。表示从数组的第 0 个元素第一个元素开始排序。n→ 排序的结束索引不包含。表示排序到数组的第 n 个元素之前为止即最后一个参与排序的元素的索引是 n-1。数据结构priorityqueue这个在贪心算法哈夫曼树里计算最小值的问题中使用过https://www.bilibili.com/video/BV1rKc6zeEhe?t939.5p6PriorityQueueIntegerheapnewPriorityQueue();intaheap.poll();intbheap.poll();// 堆顶元素是最小值 pop 弹出都是最小的,pop返回的值永远是heap队列中最小的数据结构 ArrayListadd(E e) 尾部添加元素add(int index, E e) 指定位置插入后续元素右移get(int index) 获取指定索引元素set(int index, E e) 替换指定索引元素remove(int index) 删除指定索引元素返回被删元素remove(Object o) 删除第一个匹配的元素size() 返回元素个数isEmpty() 判断是否为空clear() 清空所有元素数据结构哈希表put(K key, V value) 添加键值对若 key 已存在则覆盖旧值get(Object key) 根据 key 获取 value不存在返回 nullgetOrDefault(Object key, V defaultValue) 获取值若 key 不存在则返回默认值remove(Object key) 删除 key 对应的键值对containsKey(Object key) 判断是否包含某个 keycontainsValue(Object value) 判断是否包含某个 value较少用O(n)size() 返回键值对数量isEmpty() 判断是否为空clear() 清空所有映射keySet() 返回所有 key 的 Set 视图可用于遍历values() 返回所有 value 的 Collection 视图entrySet() 返回所有键值对 Entry 的 Set 视图遍历时效率高putIfAbsent(K key, V value) 仅当 key 不存在时插入否则返回已有值replace(K key, V newValue) 仅当 key 存在时替换值compute() / merge() 高级计算更新算法题偶尔用到字符数据类型大小一、整体顺序从小到大数字字符 大写字母 小写字母二、具体编码范围数字字符 ‘0’ ~ ‘9’‘0’ 对应 48‘9’ 对应 57大写字母 ‘A’ ~ ‘Z’‘A’ 对应 65‘Z’ 对应 90小写字母 ‘a’ ~ ‘z’‘a’ 对应 97‘z’ 对应 122