一、ArrayList集合存储基本数据类型
我们在学习ArrayList的时候知道,ArrayList对象不能存储基本类型,只能存储引用类型的数据。类似 不能写,但是存储基本数据类型对应的包装类型是可以的。所以,想要存储基本类型数据, <> 中的数据类型,必须转换后才能编写,转换写法如下:
基本类型 | 包装类(引用类型,包装类都位于java.lang包下) |
---|---|
byte | Byte |
short | Short |
int | Integer【特殊】 |
long | Long |
float | Float |
double | Double |
char | Character【特殊】 |
boolean | Boolean |
PS:从jdk1.5+ 开始,支持自动装箱、自动拆箱
自动装箱:基本类型–> 包装类型
自动拆箱:包装类型–> 基本类型
以int为例:
import java.util.ArrayList;
public class Demo05ArrayListBasic {
public static void main(String[] args) {
ArrayList<String> listA = new ArrayList<>();
// ArrayList<int> listB = new ArrayList<>(); //错误写法,泛型只能是引用类型,不能是基本类型
ArrayList<Integer> listB = new ArrayList<>();
listB.add(100);
listB.add(200);
System.out.println(listB);
int num = listB.get(1);
System.out.println("第一号元素是:" + num);
}
}
二、三个练习
1.题目要求:生成6个1~33之间的随机整数,添加到集合,并遍历集合。
思路:
- 需要存储6个数字,创建一个集合:
- 产生随机数,需要用到Random
- 用循环6次,来产生6个随机数字:for循环
- 循环内调用r.nextInt(int n),参数是33,032,整体+1才是133
- 把数字添加到集合中:add
- 遍历集合:for、size、get
代码如下:
import java.util.ArrayList;
import java.util.Random;
public class Demo01ArrayListRandom {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 6; i++) {
int num = r.nextInt(33) + 1;
list.add(num);
}
//遍历集合
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
}
2.题目要求:自定义4个学生对象,添加到集合并遍历
思路:
- 自定义Student类,四个部分(全参、无参构造方法;Getter、Setter方法)
- 创建一个集合,用来存储学生对象。泛型:
- 根据类,创建4个学生对象。
- 将4个学生对象添加到集合中:add
- 遍历集合:for、size、get
首先我们写一个Student的标准类:
public class Student {
private String name;
private int age;
public Student(String name, int age) {
this.name = name;
this.age = age;
}
public Student() {
}
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;
}
}
然后是练习的代码:
import java.util.ArrayList;
public class Demo02ArrayListStudent {
public static void main(String[] args) {
ArrayList<Student> list = new ArrayList<>();
Student one = new Student("nxy",20);
Student two = new Student("dzy",20);
Student three = new Student("jhn",20);
Student four = new Student("wky",20);
list.add(one);
list.add(two);
list.add(three);
list.add(four);
//遍历集合
for (int i = 0; i < list.size(); i++) {
Student stu = list.get(i);
System.out.println("姓名:" + stu.getName() + ",年龄:" + stu.getAge());
}
}
}
3.题目要求:用一个大集合存入20个随机数字,然后筛选其中的偶数元素,放到小集合当中。
要求使用自定义的方法来实现筛选。
思路:
- 需要创建一个集合,用来存储int数字:
- 随机数字就用Random nextInt
- 循环20次,把随机数字放入大集合:for循环、add方法
- 定义一个方法,用来进行筛选
筛选:根据大集合,筛选符合要求的元素,得到小集合。
三要素:
返回值类型:ArrayList小集合(里面元素个数不确定)
方法名称:getSmallList
参数列表:ArrayList大集合(装着20个随机数字) - 判断(if)是偶数:num % 2 == 0
- 如果是偶数,就放到小集合当中,否则不放
代码示例如下:
import java.util.ArrayList;
import java.util.Random;
public class Demo04ArrayListReturn {
public static void main(String[] args) {
ArrayList<Integer> bigList = new ArrayList<>();
Random r = new Random();
for (int i = 0; i < 20; i++) {
int num = r.nextInt(100) + 1; // 1~100
bigList.add(num);
}
ArrayList<Integer> smallList = getSmallList(bigList);
System.out.println("偶数一共有:" + smallList.size() + "个");
for (int i = 0; i < smallList.size(); i++) {
System.out.println(smallList.get(i));
}
}
public static ArrayList<Integer> getSmallList(ArrayList<Integer> bigList) {
//创建一个小集合,用来装偶数结果
ArrayList<Integer> smallList = new ArrayList<>();
for (int i = 0; i < bigList.size(); i++) {
int num = bigList.get(i);
if (num % 2 == 0){
smallList.add(num);
}
}
return smallList;
}
}