Java中的集合-Array List
集合(set)概述
/*
* 集合类的特点:
* 长度可变。
*
* ArrayList<E>:
* 大小可变数组的实现
*
* <E>:是一种特殊的数据类型,泛型【泛型也就是装在集合中的所有元素,全都是统一类型,如Student返回的值就必须以Studen来接,如:Student str = s.getName】。
* 怎么用呢?
* 在出现E的地方我们使用引用数据类型替换即可
* 举例:ArrayList<String>,ArrayList<Student>
* 注意事项:泛型只能是引用类型,不能是基本类型
*
* 构造方法:
* ArrayList()
*/
说简单点就是可灵活操作的数组
添加,获取元素,删除,获取长度
添加方法是:.add(e),add(int index,E element);
获取方法是:.get(index);只是输出不改变原集合;
删除方法是:.remove(index), 删除指定索引处的元素,返回被删除的元素;
.remove(Object o); 删除指定的元素,返回删除是否成功;
获取集合中元素个数(跟获取数组长度是一个意思):.size();
import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包
public class test {
public static void main(String[] args) {
List<String> person = new ArrayList<String>();
person.add("A"); // 索引为0 //.add(e)
person.add("B"); // 索引为1
person.add("C"); // 索引为2
person.add(1, "我要插队"); // 向下标为1的位置添加一个元素(原1下标的元素向后移动)
person.remove(3); // .remove(index)
person.remove("B"); // .remove(Object o)
String per = "";
per = person.get(1); // 获取下标为1的元素值
System.out.println("集合中小标为1的元素是:" + per);
int count = person.size(); // 获取集合输数据个数
System.out.println("集合中一共还有【" + count + "】个元素");
for (int i = 0; i < person.size(); i++) { // 获取数组长度
System.out.println("person[" + i + "]:" + person.get(i)); // .get(index)
}
}
}
eclipse执行结果:
集合中小标为1的元素是:我要插队
集合中一共还有【2】个元素
person[0]:A
person[1]:我要插队
遍历集合
示例代码:
/*
* 遍历集合中的所有元素
*/
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args) {
List<String> arr = new ArrayList<>(); // 创建一个集合
// 向集合中添加元素
arr.add("张三");
arr.add("李四");
arr.add("王二");
// 遍历集合
for (int i = 0;i < arr.size(); i++) {
String str = arr.get(i); // 标准写法这样后续方便进行二次操作
System.out.println(str);
}
}
}
eclipse执行结果:
张三
李四
王二
是否包含某个元素
方法:.contains(Object o),返回true或者false
import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包
public class test {
public static void main(String[] args) {
List<String> fruits=new ArrayList<>();
fruits.add("苹果");
fruits.add("香蕉");
fruits.add("桃子");
//for循环遍历list
for (int i = 0; i < fruits.size(); i++) {
System.out.println(fruits.get(i));
}
String appleString="苹果";
//true or false
System.out.println("fruits中是否包含苹果:"+fruits.contains(appleString));
if (fruits.contains(appleString)) {
System.out.println("我喜欢吃苹果");
}else {
System.out.println("我不开心");
}
}
}
eclipse执行结果:
苹果
香蕉
桃子
fruits中是否包含苹果:true
我喜欢吃苹果
修改(替换)指定索引元素
set(index, element); 修改指定索引处的元素,返回被修改的元素
.add(index, element); 将指定索引位置的元素插入为新的元素,原有元素向后移
**注意:** 他们不一样有区别的
import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包
public class test {
public static void main(String[] args) {
String a="白龙马", b="沙和尚", c="八戒", d="唐僧", e="悟空";
List<String> people = new ArrayList<>();
people.add(a);
people.add(b);
people.add(c);
people.set(0, d); //.set(index, element); //将d唐僧放到list中索引为0的位置,替换a白龙马
people.add(1, e); //.add(index, element); //将e悟空放到list中索引为1的位置,原来位置的b沙和尚后移一位
//增j加for循环遍历list
for(String str : people){
System.out.println(str);
}
}
}
eclipse执行结果:
唐僧
悟空
沙和尚
八戒
获取元素的索引
.indexOf(); 和 .lastIndexOf();
**注意:**他们不一样有区别的
- indexOf 只匹配到第一个合适的,把位置返回
- lastIndexOf 是匹配最后一个合适的,把位置返回
import java.util.ArrayList;
import java.util.List;
public class test {
public static void main(String[] args) {
List<String> names=new ArrayList<>();
names.add("刘备"); //索引为0
names.add("关羽"); //索引为1
names.add("张飞"); //索引为2
names.add("刘备"); //索引为3
names.add("张飞"); //索引为4
System.out.println(names.indexOf("刘备"));
System.out.println(names.lastIndexOf("刘备"));
}
}
eclipse执行结果:
0
3
ArrayList中存储基本类型数据
因为泛型中只能是引用类型,不能是基本类型,但是有的时候我们可能需要存储一些基本类型数据,那该怎么办呢?
import java.util.ArrayList;
import java.util.List; // 使用List不要忘了导入这个包
/*
* 如果希望向集合ArrayList当中存储基本类型数据,必须使用基本类型对应的“包装类”。
*
* 从JDK 1.5+开始,支持自动装箱、自动拆箱。
*
* 自动装箱:基本类型 --> 包装类型(自动进行类型转换)
* 自动拆箱:包装类型 --> 基本类型(自动进行类型转换)
*/
public class Demo05ArrayListBasic {
public static void main(String[] args) {
List<String> listA = new ArrayList<>();
// 错误写法!泛型只能是引用类型,不能是基本类型
// List<int> listB = new ArrayList<>();
List<Integer> listC = new ArrayList<>();
listC.add(100);
listC.add(200);
System.out.println(listC); // [100, 200]
int num = listC.get(1);
System.out.println("第1号元素是:" + num);
}
}

浙公网安备 33010602011771号