Java没有提供给我们数组添加元素的操作,但往往有些时候很需要。
使用借助ArrayList来达到字符串数组操作:
使用包:
import java.util.ArrayList;
import java.util.List;
List<String> list = new ArrayList<String>();
//将数组元素添加到列表
list.add(arr[i]);
}
//下标不再范围会报错;这里判断一下
list.add(w, str);
} else { // 否则自动添加在末尾
list.add(str);
}
String[] newArr = list.toArray(new String[1]); // 返回一个包含所有对象的指定类型的数组
//最终的结果就是 newArr 数组了。
例子:
ArrayS类:
import java.util.ArrayList;
import java.util.List;
public class ArrayS {
/**
* @author Yihrmc
* @parameter {添加}add(操作StrArr,添加的元素,添加位置[非法下标,默认末尾])
* {下标删除}removeIndex(操作StrArr,删除的元素下标)
* {指定删除}removeStr(操作StrArr,删除的元素)
* {删除重复}dereStr(操作StrArr)
* @return Array
*/
public static void main(String[] args) {
String[] arr = new String[] { "asd", "dsf" };
ArrayS as = new ArrayS();
arr = as.add(arr, "0", 1);
for (String str : arr) {
System.out.println(str);
}
}
// 添加字符串数组元素
public String[] add(String[] arr, String str, int w) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
if (w >= 0 && w < arr.length) {// 下标合法范围
list.add(w, str);
} else {// 否则自动添加在末尾
list.add(str);
}
String[] newArr = list.toArray(new String[1]); // 返回一个包含所有对象的指定类型的数组
return newArr;
}
// [下标]删除字符串数组元素
public String[] removeIndex(String[] arr, int w) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
list.remove(w);
String[] newArr = list.toArray(new String[1]); // 返回一个包含所有对象的指定类型的数组
return newArr;
}
// [字符串]删除字符串数组元素
public String[] removeStr(String[] arr, String w) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < arr.length; i++) {
list.add(arr[i]);
}
list.remove(w);
String[] newArr = list.toArray(new String[1]); // 返回一个包含所有对象的指定类型的数组
return newArr;
}
// 删除字符串数组重复元素
public String[] dereStr(String[] arr) {
List<String> list = new ArrayList<String>();
for (int i = 0; i < arr.length; i++) {
if (!list.contains(arr[i])) {
list.add(arr[i]);
}
}
String[] newArr = list.toArray(new String[1]); // 返回一个包含所有对象的指定类型的数组
return newArr;
}
}
测试:
public class Ta {
public static void main(String[] args) {
String[] ars=new String[]{"y","i","h","r","m","c","a","b","a","a"};
System.out.println("原数组列表:");
for(String str:ars){
System.out.print(str + " ");
}
ArrayS ARS=new ArrayS();
ars = ARS.add(ars, "h", 0);//添加元素
System.out.println("\n添加h元素,后列表:");
for(String str:ars){
System.out.print(str + " ");
}
ars = ARS.removeIndex(ars,0);//删除元素
System.out.println("\n删除[0]元素,后列表:");
for(String str:ars){
System.out.print(str + " ");
}
ars = ARS.removeStr(ars,"i");//删除元素
System.out.println("\n删除i元素,后列表:");
for(String str:ars){
System.out.print(str + " ");
}
ars = ARS.dereStr(ars);//删除重复元素
System.out.println("\n删除重复元素,后列表:");
for(String str:ars){
System.out.print(str + " ");
}
}
}