最近刷算法题常用到数组列表字符串,发现有一些方法真的真的很好用,下面系统的整理一下。
Arrays
-
copyOf(原数组,副本指定长度);复制指定数组,使副本具有指定长度,长度比原数组短时,截取,长则用0/null/false填充。
-
copyOfRange(原数组,int from,int to);将数组指定范围赋值到新的数组。
-
deepEquals(数组1,数组2);比较两个数组是否深层相等。
equals(数组1,数组2);比较两个数组。equals和deepEquals区别:
equals判断两个数组相等,若两个数组以相同顺序包含相同元素,则返回true否则返回false;deepEquals适用于任意深层次的嵌套数组。一维数组两者比较结果相同,二(多)维数组则只能用deepEquals来比较。equals和区别:
先介绍:对于基本数据类型(byte,int,long,char,Boolean,double,short,float)双等号比较的是他们的值。当==用来比较类时,比较的是内存中的存放地址。
equals:Java中所有的类都继承Object,Object中定义了equals方法,查看equals源代码:public boolean equals(Object obj) { return (this == obj); }
故equals比较的也是内存地址。此外要注意的是,在String,Integer,Date这些类中equals有自身的实现方式,以String为例:查看源代码:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
Student stu = new Student();
Student student = new Student();
System.out.println(stu.equals(student));//false
String s1 = "ww";
String s2 = "ww";
System.out.println(s1.equals(s2));//true
String s = new String("ww");
String str = new String("ww");
System.out.println(stu.equals(str));//false
字符串的缓冲池:String s1 = “ww”;当创建字符串时,程序会在String缓冲池中寻找相同值的对象若存在,则s1引用该对象(不再创建新的对象)。当用new创建字符串时,无论缓冲池是否有相同值的对象,系统都会在内存中创建新的对象。
- fill(数组,元素);将指定元素分配到给定数组中;
fill(数组,int fromindex,int toindex,元素);将指定元素分配到给定数组的指定范围。 - sort(数组);排序
sort(数组,int fromindex,int toindex);对数组指定范围进行排序。 - toString(数组);打印数组(一维)
deeptoString(数组);打印二维数组 - asList();返回受指定数组支持的固定大小的列表
String[] str = {"a","b","c","d","e"};
ArrayList<String> list = new ArrayList<String>(Arrays.asList(str));
Array(不常用)
- get(数组,int index);返回指定数组中索引组件的值
- getLength(数组);数组长度;
- set(数组,int index,Object value);将给定数组索引处的值设置为value;
String
-
charAt(int index);index处的char
-
concat(String anotherstring);指定字符串连接到该字符串后面
-
contains(CharSequence s);判断字符串中是否包含s
-
indexOf(字符/字符串);字符或字符串第一次在此字符串中出现的索引
indexOf(字符/字符串,int fromindex);从fromindex处开始搜寻
lastIndexOf();最后一次出现 -
isEmpty();
-
replace(原字符/字符串,新字符/字符串);
-
subString(int beginindex,int endindex);返回子字符串;
-
toCharArray();字符数组;
-
valueOf(给定类型数据);将其他类型的数据转换成String类型 ;
int和String类型转换:
①int–>String :
String str = String.valueOf(n);
str = Integer.toString(n);
str = “”+n;
②String–>int:(最好try…catch,字符串中可能不全是数字)
int n = Integer,parseInt(str);
n = Integer.valueOf(str).intValue();