对象数组&ArrayList
对象数组
给定一个Person类
package Class;
public class Person {
private String name;
private int age; //加了之后只能在本类中使用
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public void show() {
System.out.println("姓名:" + name);
System.out.println("年龄:" + age);
}
}
通过这个类可以创建一个对象数组
package Array;
import Class.Person;
public class objectArray {
public static void main(String[] args) {
//创建一个长度为3的数组,里面用来存放Person类型的对象
Person[] arr = new Person[3];
//创建三个对象,对象名字其实存储的是地址
Person one = new Person("Jack", 19);
Person two = new Person("Alice", 22);
Person three = new Person("Lin", 31);
arr[0] = one;
arr[1] = two;
arr[2] = three;
arr[0].show();
arr[1].show();
arr[2].show();
}
}
但是这样有一个缺点,数组的长度不能改变
为了解决这个·问题,我们可以使用ArrayList类
ArrayList类
ArrayList是采用类型参数的泛型类
对于ArrayList来说,有一个尖括号表示它是泛型。
什么是泛型?
泛型就是装在集合中的元素,全是统一的类型。
泛型只能是引用数据类型,不能是基本类型。
ArrayList的创建
package Class;
import java.util.ArrayList;
//数组的长度不可改变,但ArrayList可以变
public class ArrayList_ {
public static void main(String[] args) {
//创建了一个ArrayList集合,集合的名称是list,
//里面是装的都是String类型的数据
//备注:从JDK1.7开始,右侧的尖括号可以不写内容(与左侧一样)
ArrayList<String> list = new ArrayList<>();
//添加一些数据
list.add("who I love");
list.add("I love you");
list.add("who are you");
//打印
System.out.println(list);
}
}
ArrayList的基本方法
-
添加方法
list.add(“Jack”); -
从集合中获取元素,get方法。索引值从0开始
String name = list.get(2); -
从集合中删除元素,remove方法。索引值从0开始
String nameRemoved = list.remove(1); -
获取list的长度size方法
int size = list.size(); -
遍历list
for (int i = 0; i < list.size(); i++) {
System.out.println( list.get(i) );
}package Class; import java.util.ArrayList; public class ArrayListMethod { public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); //添加方法 list.add("Jack"); list.add("Ben"); list.add("Alice"); list.add("David"); list.add("Dickson"); System.out.println(list); //从集合中获取元素,get方法。索引值从0开始 String name = list.get(2); System.out.println("The third person is " +name); //从集合中删除元素,remove方法。索引值从0开始 String nameRemoved = list.remove(1); System.out.println("The name who was removed is " + nameRemoved); System.out.println(list); //获取list的长度 int size = list.size(); System.out.println("The length of this list is " + size); //遍历list for (int i = 0; i < list.size(); i++) { System.out.println("Number" + (i+1)+ " is " + list.get(i)); } } } -
包装类
ArrayList不能直接使用基本数据类型,必须使用基本类型对应的包装类。
基本类型 包装类 byte Byte short Short int Integer long Long float Float double Double char Character boolean Boolean package Class; import java.util.ArrayList; public class ArrayListDemo1 { public static void main(String[] args) { //ArrayList不能直接使用基本数据类型 //必须使用基本类型对应的包装类 //Integer包装类 ArrayList<Integer> list1 = new ArrayList<>(); for (int i = 0; i < 20; i++) { list1.add(10*(i+1)); } System.out.println(list1); //Character包装类 ArrayList<Character> list2 = new ArrayList<>(); for (int i = 0; i < 26; i++) { list2.add((char)('a'+i)); } System.out.println(list2); } }从JDK1.5+开始,支持自动装箱、自动拆箱
自动装箱:把基本类型赋值给包装类型
自动拆箱:把包装类型赋值给基本类型
练习
1.生成n个1~33之间的数,添加到集合中并遍历集合
package Class;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
//Q:生成n个1~33之间的数,添加到集合中并遍历集合
public class ArrayuListDemo1 {
public static void main(String[] args) {
Random r = new Random();
Scanner sc = new Scanner(System.in);
ArrayList<Integer> list = new ArrayList<>();
int times = sc.nextInt();
for (int i = 0; i < times; i++) {
list.add(r.nextInt(33)+1);
}
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
System.out.println(list);
}
}
2.自定义4个学生对象,并添加到集合中
package Class;
import java.util.ArrayList;
//自定义4个学生对象,并添加到集合中
public class ArrayListDemo2 {
public static void main(String[] args) {
ArrayList<Person> stu = new ArrayList<>();
Person one = new Person("Jack", 15);
Person two = new Person("John", 16);
Person three = new Person("Alice", 18);
Person four = new Person("may", 22);
stu.add(one);
stu.add(two);
stu.add(three);
stu.add(four);
for (int i = 0; i < stu.size(); i++) {
System.out.println(stu.get(i).getAge());
System.out.println(stu.get(i).getName());
stu.get(i).show();
}
}
}
3.自定义一个打印ArrayList的方法,格式{a@b@c@}
package Class;
import java.util.ArrayList;
//
public class ArrayListDemo3 {
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("Jack");
list.add("Ben");
list.add("Alice");
list.add("David");
list.add("Dickson");
print(list);
}
//定义新方法
public static void print(ArrayList<String> list){
System.out.print("{");
for (int i = 0; i < list.size(); i++) {
String name = list.get(i);
if(i == list.size() -1)
System.out.println(name + "}");
else
System.out.print(name + "@");
}
return;
}
}
4.用一个大集合存入20个随机数字,然后筛选出其中的偶数元素,放到小集合中。要求使用自定义方法完成
package Class;
import java.util.ArrayList;
import java.util.Random;
public class ArrayListDemo4 {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> list1 = new ArrayList();
for (int i = 0; i < 20; i++) {
list1.add(r.nextInt(100)+1);
}
System.out.print("The original ArrayList is ");
System.out.println(list1);
ArrayList<Integer> receive = findEvenNumber(list1);
System.out.print("The return ArrayList is ");
System.out.println(receive);
}
public static ArrayList<Integer> findEvenNumber(ArrayList<Integer> list){
ArrayList<Integer> res = new ArrayList<>();
for (int i = 0; i < list.size(); i++) {
if(list.get(i) % 2 == 0)
res.add(list.get(i));
}
return res;
}
}
本文介绍了Java中的对象数组和ArrayList类,详细讲解了ArrayList的泛型概念、创建及基本操作,包括添加、删除、获取元素及遍历。还提到了自动装箱和拆箱的概念。同时给出了几个关于ArrayList的实际编程练习,如生成随机数、添加自定义对象、自定义打印方法以及筛选偶数元素等。
921

被折叠的 条评论
为什么被折叠?



