- charAt() 方法用于返回字符串指定索引处的字符。索引范围为从 0 到 length() - 1。
map.getOrDefault(num, 0) :如果map存在num这个key,则返回num对应的value,否则返回0.
Arrays.sort(nums); 数组排序
Arrays.asList("a","b","c");;该方法是将数组转化成List集合的方法。
s.toCharArray();将字符串中的字符转换为字符数组.
new String(ch) 将数组转化为字符串。
str.trim().split(" ");//将字符串先去掉头尾的空格,再按照" "分割。
Arrays.toString(strIn) 数组转字符串
2. 求字符串长度 s.length();
求数组长度:s.length;
集合长度:size()
3.集合
1.总体结构:
接口:Collection/List/Set/Map
实现类:Arraylist/LinkedList/HashSet/TreeSet/HashMap/TreeMap
2.Collection 集合
3.List集合
List集合的概述
-
有序集合,这里的有序指的是存取顺序
-
用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素
-
与Set集合不同,列表通常允许重复的元素
List集合的特点
-
存取有序
-
可以重复
-
有索引
List集合的实现类
ArrayList集合
底层是数组结构实现,查询快、增删慢
*
LinkedList集合
底层是链表结构实现,查询慢、增删快
*
LinkedList集合的特有功能
3.创建hashset(集合):
Set<Integer> set1 = new HashSet<>()
set1.add(i)//添加元素
if (set1.contains(i)) //判断是否包含i
set.size() #hashset的大小
4.创建比较
//List
List<String> list = new ArrayList<>();
//二维数组
List<List<Integer>> result = new ArrayList<>();
//二维数组添加元素
result.add(Arrays.asList(nums[i], nums[left], nums[right]))
//LinkedList
LinkedList<String> list = new LinkedList<>();
//Set
Set<String> set = new TreeSet<>();
//TreeSet
TreeSet<Integer> ts = new TreeSet<Integer>();
//HashSet
HashSet<String> set = new HashSet<String>();
//Map
Map<String,String> map = new HashMap<String,String>();
//HashMap
HashMap<Student, String> hm = new HashMap<Student, String>()
//TreeMap
TreeMap<Student,String> tm = new TreeMap<>();
5.遍历比较
List
普通for循环
//size方法跟get方法还有循环结合的方式,利用索引获取到集合中的每一个元素
for (int i = 0; i < list.size(); i++) {
String s = list.get(i);
System.out.println(s);
}
Set
//Set集合是没有索引的,所以不能使用通过索引获取元素的方法
不能用for (int i = 0; i < set.size(); i++) {
//
// }
for (String s : set) {
System.out.println(s);
}
TreeSet
for(Integer i : ts) {
System.out.println(i);
}
HashSet
for(String s : set) {
System.out.println(s);
}
Map
方法一:
//获取所有键的集合。用keySet()方法实现
Set<String> keySet = map.keySet();
//遍历键的集合,获取到每一个键。用增强for实现
for (String key : keySet) {
//根据键去找值。用get(Object key)方法实现
String value = map.get(key);
System.out.println(key + "," + value);
}
方法二:
//获取所有键值对对象的集合
Set<Map.Entry<String, String>> entrySet = map.entrySet();
//遍历键值对对象的集合,得到每一个键值对对象
for (Map.Entry<String, String> me : entrySet) {
//根据键值对对象获取键和值
String key = me.getKey();
String value = me.getValue();
System.out.println(key + "," + value);
}
HashMap
//遍历集合
Set<Student> keySet = hm.keySet();
for (Student key : keySet) {
String value = hm.get(key);
System.out.println(key.getName() + "," + key.getAge() + "," + value);
}
6.字符串操作
-
s.erase(pos,n);
删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
-
字符串长度 s.length();
|----|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 1 | char charAt(int index) 返回指定索引处的 char 值。 |
| 2 | int compareTo(Object o) 把这个字符串和另一个对象比较。 |
| 3 | int compareTo(String anotherString) 按字典顺序比较两个字符串。 |
| 4 | int compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。 |
| 5 | String concat(String str) 将指定字符串连接到此字符串的结尾。 |
| 6 | boolean contentEquals(StringBuffer sb) 当且仅当字符串与指定的StringBuffer有相同顺序的字符时候返回真。 |
| 7 | static String copyValueOf(char[] data) 返回指定数组中表示该字符序列的 String。 |
| 8 | static String copyValueOf(char[] data, int offset, int count) 返回指定数组中表示该字符序列的 String。 |
| 9 | boolean endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 |
| 10 | boolean equals(Object anObject) 将此字符串与指定的对象比较。 |
| 11 | boolean equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 |
| 12 | byte[] getBytes() 使用平台的默认字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
| 13 | byte[] getBytes(String charsetName) 使用指定的字符集将此 String 编码为 byte 序列,并将结果存储到一个新的 byte 数组中。 |
| 14 | void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin) 将字符从此字符串复制到目标字符数组。 |
| 15 | int hashCode() 返回此字符串的哈希码。 |
| 16 | int indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 |
| 17 | int indexOf(int ch, int fromIndex) 返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。 |
| 18 | int indexOf(String str) 返回指定子字符串在此字符串中第一次出现处的索引。 |
| 19 | int indexOf(String str, int fromIndex) 返回指定子字符串在此字符串中第一次出现处的索引,从指定的索引开始。 |
| 20 | String intern() 返回字符串对象的规范化表示形式。 |
| 21 | int lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。 |
| 22 | int lastIndexOf(int ch, int fromIndex) 返回指定字符在此字符串中最后一次出现处的索引,从指定的索引处开始进行反向搜索。 |
| 23 | int lastIndexOf(String str) 返回指定子字符串在此字符串中最右边出现处的索引。 |
| 24 | int lastIndexOf(String str, int fromIndex) 返回指定子字符串在此字符串中最后一次出现处的索引,从指定的索引开始反向搜索。 |
| 25 | int length() 返回此字符串的长度。 |
| 26 | boolean matches(String regex) 告知此字符串是否匹配给定的正则表达式。 |
| 27 | boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
| 28 | boolean regionMatches(int toffset, String other, int ooffset, int len) 测试两个字符串区域是否相等。 |
| 29 | String replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 |
| 30 | String replaceAll(String regex, String replacement) 使用给定的 replacement 替换此字符串所有匹配给定的正则表达式的子字符串。 |
| 31 | String replaceFirst(String regex, String replacement) 使用给定的 replacement 替换此字符串匹配给定的正则表达式的第一个子字符串。 |
| 32 | String[] split(String regex) 根据给定正则表达式的匹配拆分此字符串。 |
| 33 | String[] split(String regex, int limit) 根据匹配给定的正则表达式来拆分此字符串。 |
| 34 | boolean startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 |
| 35 | boolean startsWith(String prefix, int toffset) 测试此字符串从指定索引开始的子字符串是否以指定前缀开始。 |
| 36 | CharSequence subSequence(int beginIndex, int endIndex) 返回一个新的字符序列,它是此序列的一个子序列。 |
| 37 | String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。 |
| 38 | String substring(int beginIndex, int endIndex) 返回一个新字符串,它是此字符串的一个子字符串。 |
| 39 | char[] toCharArray() 将此字符串转换为一个新的字符数组。 |
| 40 | String toLowerCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为小写。 |
| 41 | String toLowerCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为小写。 |
| 42 | String toString() 返回此对象本身(它已经是一个字符串!)。 |
| 43 | String toUpperCase() 使用默认语言环境的规则将此 String 中的所有字符都转换为大写。 |
| 44 | String toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符都转换为大写。 |
| 45 | String trim() 返回字符串的副本,忽略前导空白和尾部空白。 |
| 46 | static String valueOf(primitive data type x) 返回给定data type类型x参数的字符串表示形式。 |
| 47 | contains(CharSequence chars) 判断是否包含指定的字符系列。 |
| 48 | isEmpty() 判断字符串是否为空。 |
6.类型转换
万能法则
import java.util.Scanner;
public class myScanner {
Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
int a=1;
String b;
char c;
b=String.valueOf(a);//int转字符串
a=Integer.valueOf(b);//字符串转int
c=b.charAt(0);//字符串转字符
b=String.valueOf(c);//字符转字符串
//字符和int的转换 只需要用过字符串即可。
}
}
6.1数字、字符串相互转换
// 数字转字符串 method1
int number = 5;
String str = String.valueOf(number);
System.out.println(str);
// 数字转字符串 method2
int number = 5;
Integer itr = number; //int装箱为对象,再调用对象的toString方法
String str = itr.toString(); //或者直接 String str = Integer.toString(number);
System.out.println(str);
// 数字转字符串 method3
int number = 5;
String str = number + "";
System.out.println(str);
// 字符串转数字
String str = "123";
int number = Integer.parseInt(str);
System.out.println(number);
6.2 字符、字符串相互转换
//字符转字符串 method 1
char ch = '5';
String str = String.valueOf(ch);
System.out.println(str);
//字符转字符串 method 2
char ch = '5';
String str = ch + "";
System.out.println(str);
// 字符串转字符
// 其实这里也算不上转换了,只是获取对应位置上字符
String str = "123";
char ch = str.charAt(0); //这里获取到的字符为1
System.out.println(ch);
6.3 数字、字符相互转换
// 数字转字符
// 不能直接转换,如下图。因此需借助数字转字符串。
// 首先将数字转为字符串,再获取字符
int number = 5; //注意这里数字只能是个位数并且不能为负
String temp = Integer.toString(number);
char ch = temp.charAt(0);
System.out.println("数字转字符:"+ch);
// 字符转数字
// 先把字符转为字符串,再转换为数字
char ch = '5';
String temp = String.valueOf(ch);
int a = Integer.parseInt(temp);
System.out.println(a);
//或者
int a = ch - '0';
6.4 字符数组转字符串
String newStr = new String(charArray, 0, charArray.length);