您的位置 首页 java

java容器container ArrayList类

/**

* container容器 contain包含 Collection单例集合 Map双例集合

* Collection 集合中的元素是逐个存放的 Map集合中元素成对存储 KV对 key键value值对

* Collection根接口分List子接口和Set子接口 List接口为有序(可通过index索引查找)、元素可重复 Set接口为无序元素不可重复

* ArrayList为List接口的实现类

*/

public class TestArrayList1 {

public static void main(String[] args) {

List<String> s1 = new ArrayList<>();

//List<E>接口 E(element) ArrayList<E>泛型类implements实现List<E>泛型接口 写到等式中时两个E是同一个

//所以和ArrayList<String> s1 = new ArrayList<>();一样 new右侧的<>不填

//使用接口引用实现类的好处是不会受到实现类的修改的影响

s1.add(“a”);

//ArrayList实现在Collection接口中定义的方法.add(Object) 实现为向容器中添加一个元素 添加至末尾 返回boolean添加操作是否成功 在添加元素a后容器.size()长度变为1

s1.add(0,”b”);

//ArrayList实现在List接口中定义的方法.add(int index,Object) 向容器中指定位置index插入一个元素 该位置原元素及后面的元素全部后移 添加元素b后容器长度变为2

// s1.add(3,”c”);报错 Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 3, Size: 2

//bounds界限 index不能超出容器的.size()长度范围 s1当前长度为2 index只可以是0,1,2 已存在的元素下标是0,1 所以如果add(2,Object)即为向末尾添加元素

System.out.println(s1.get(0));

//ArrayList实现在List接口中定义的方法.get(int index) 返回index索引位的元素 因为b插入0位使得a变为1位 所以结果为b

for (int i=0;i<s1.size();i++){

//ArrayList实现在Collection接口中定义的.size()方法 返回容器列表中的元素总数int 如果超过Integer.MAX_VALUE则返回最大值MAX_VALUE

System.out.println(s1.get(i));

//遍历

}

for (String s:s1){

//for-each遍历容器

System.out.println(s);

}

System.out.println(s1.remove(0));

//ArrayList实现在List接口中定义的.remove(int index)方法 删除index索引位的元素 该位后面的元素全部前移 方法会返回被删除的元素 0位为b所以结果为b

System.out.println(s1.remove(“a”));

//ArrayList实现在Collection接口中定义的.remove(Object o)方法 删除传入的元素/对象 该方法只会删除1个元素 后面的元素全部前移 返回boolean删除操作是否成功

s1.add(“c”);

System.out.println(s1.set(0,”d”));

//List接口的.set(int index,Object o) 替换index索引位的元素为o 返回被替换掉的元素 结果为c

s1.clear();

//Collection接口的.clear() 清空容器 无返回 清空后.size()为0

System.out.println(s1.isEmpty());

//Collection接口的.isEmpty() 判断容器是否为空

s1.add(“e”);

s1.add(“f”);

System.out.println(s1.contains(“f”));

//Collection接口的.contains(Object o) 判断容器中是否包含o 结果为true

s1.add(“e”);

System.out.println(s1.indexOf(“e”));

//List接口的.indexOf(Object o) 在容器中查找o 存在则返回第一个index 不存在则返回-1

System.out.println(s1.lastIndexOf(“e”));

//.lastIndexOf(Object o)返回最后一个index 不存在则返回-1

Object[] o1 = s1.toArray();

//Collection的.toArray()将单例集合转换为数组array 返回类型固定Object[]

//String[] str1 = (String[])o1;报错[Ljava.lang.Object; cannot be cast to [Ljava.lang.String; Object[]数组不能强转为 String []

//当需要转为同泛型类型的数组时不能使用无参的.toArray()方法

for (Object o:o1){

System.out.println((String) o);

//强转只可以对单独元素进行 不能对集合强转

}

String[] str1 = new String[s1.size()];

s1.toArray(str1);

//Collection的.toArray(T[] a) 将容器中的元素放到实参指定的数组中 泛型 方法 根据传入实参的类型决定返回值类型

//传入的参数必须初始化 且不能为null会报空指针异常 需要创建好数组的长度 .toArray()方法会对传进的str1直接修改 方法执行后str1已经改变了 方法还会将str1返回

System.out.println(Arrays.toString(str1));

//str1已经被修改 结果为[e, f, e]

String[] str01 = s1.toArray(new String[0]);

System.out.println(str01.length);

//通过new数组赋值给引用变量 用一条语句执行

//当实参数组的长度小于容器.size()时 会生成一个新的数组 长度为.size()

List<String> s2 = new ArrayList<>();

s2.add(“1”);

s2.add(“2”);

s2.add(“1”);

//s1的内容为e,f,e s2的内容为1,2,1

System.out.println(s1.addAll(s2));

//Collection的.addAll(Collection<? extends E> c) 将c添加到this容器中 c的泛型类型必须是this的泛型类型的同类或子类 返回boolean操作是否成功 当s2为空时返回false

System.out.println(s1);

//ArrayList实现的.addAll() c会添加到this的末尾 结果为[e, f, e, 1, 2, 1] addAll即并集 s1为空也可以.addAll(s2)

s2.clear();

s2.add(“e”);

s2.add(“1”);

System.out.println(s1.retainAll(s2));

//Collection的.retainAll(Collection<?> c) retain保持保留 对s1中现有的元素进行操作 仅保留出现在s2中元素 即求交集 返回 boolean 因为是对this容器进行删减 形参c不需要限定extends E

System.out.println(s1);

//结果[e, e, 1, 1] 只要是符合的元素会保留所有数量 删减不符合的元素将后面的元素前移

s2.remove(“1”);

System.out.println(s1.removeAll(s2));

//Collection的.removeAll(Collection<?> c) 删除this中存在于c中的元素 即求差集 返回boolean 符合的元素会删除所有数量

System.out.println(s1);

//结果[1, 1]

ArrayList<String> s3 = new ArrayList<>();

s3.add(“1”);

}

}

文章来源:智云一二三科技

文章标题:java容器container ArrayList类

文章地址:https://www.zhihuclub.com/193007.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图