Java中 Array、Arrays与ArrayList
一、Array类
Array类提供了动态创建和访问Java数组的方法。
Array
允许在执行 get 或 set 操作期间进行扩展转换,但如果发生收缩转换,则抛出 IllegalArgumentException
。
例如:下面是一个对象数组
public class Demo01Array {
public static void main(String[] args) {
/*对象数组:定义数组来承载对象
* 缺点:数组一旦确定长度,不可修改
* */
Person[] person = new Person[3];
Person one = new Person("小明",18);
Person two = new Person("小李",28);
Person three = new Person("小张",38);
person[0] = one; //地址值
person[1] = two; //地址值
person[2] = three; //地址值
System.out.println(person[0].getName());
System.out.println(person[0].getAge());
}
}
使用到的Person类
public class Person {
//属性
private String name;
private int age;
//方法
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
二、ArrayList类
1.向ArrayList中添加元素,使用add()方法
import java.util.ArrayList;
public class Demo02ArrayList {
public static void main(String[] args) {
//创建了一个ArrayList集合,集合的名称是list,类型为String
//备注:从JDK1.7+右边的尖括号可以不写类型,但是尖括号必须有
ArrayList<String> list = new ArrayList<String>();
//向集合中添加数据,使用add()方法
list.add("小明");
list.add("小李");
list.add("小张");
System.out.println(list);
}
}
数组一旦确定,长度不可改变
但是ArrayList类长度是可以变化的,使用add()方法进行添加元素
注意事项:对于ArrayList集合来说,打印的不是地址值,而是内容
如果内容为空,则打印的结果是中括号[]
2.ArrayList中常用的方法
public boolean add(E e):向集合中添加元素,元素类型与泛型一致
public E get(int index):从集合中获取元素,参数是索引编号,返回值是对应位置的元素
public E remove(int index):从集合中删除元素,参数是索引编号,返回值是被删除的元素
public int size():返回集合的长度
import java.util.ArrayList;
public class Demo03ArrayListMethod {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
//向集合中添加元素
list.add("安徽");
list.add("河北");
list.add("河南");
System.out.println(list);
//从集合中获取元素
System.out.println(list.get(1));
//从集合中删除元素
System.out.println(list.remove(2));
System.out.println("删除后的集合:"+list);
}
}
3.对ArrayList进行遍历
import java.util.ArrayList;
public class Demo04ArrayListEach {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<String>();
list.add("小明");
list.add("小李");
list.add("小张");
//对集合进行遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
}
4.ArrayList中的泛型
集合的泛型只能是引用类型
如果想要使用基本数据类型,则需要将其转换为对应的包装类
基本数据类型 包装类
byte Byte
short Short
int Integer 【特殊】
long Long
float Float
double Double
char Character 【特殊】
boolean Boolean
从JDK1.5开始可以自动实现装箱和拆箱
自动装箱:基本数据类型 --> 引用类型
自动拆箱: 引用类型 --> 基本数据类型
public class Demo05ArrayListBasic {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(100);
list.add(200);
list.add(300);
System.out.println(list.get(0));
}
}
三、Arrays类
Arrays是一个与数组有关的类,提供了大量的静态方法来操作数组。
public static String toString(数组):将数组转换为字符串,默认格式为[元素1,元素2,元素3...]
public static void sort(数组):对参数数组按照升序(从小到大)进行排序
注意事项:
①如果对数字进行排序,则是按照数字的大小的顺序进行排序
②如果对字符串进行排序,则是按照字母的先后的顺序进行排序
import java.util.Arrays;
public class Demo01Arrays {
public static void main(String[] args) {
//将数组转换为字符串
int[] arr1 = {1,2,3};
String str = Arrays.toString(arr1);
System.out.println("(1)将数组转换为字符串:"+str);
//对整型数组进行排序
int[] arr2 = {45,21,2,24,35,26};
Arrays.sort(arr2);
System.out.println("(2)对数组进行排序:"+Arrays.toString(arr2));
//对字符串数组进行排序
String[] str1 = {"abc","bcd","cde"};
Arrays.sort(str1);
System.out.println("(3)对字符串数组进行排序:"+Arrays.toString(str1));
}
}
小练习:对给定的字符串,按照升序排序并进行倒序打印
public class Demo02ArraysPractise {
public static void main(String[] args) {
String str = "123daeffcsgrduirjr7tadwQG";
//将字符串转换为数组
char[] chars = str.toCharArray();
//按照升序排列
Arrays.sort(chars);
//将字符数组倒序排列
for (int i = chars.length - 1; i >= 0; i--) {
System.out.println(chars[i]);
}
}
}