容器架构介绍,数组优略势,泛型的定义,Collection接口,List接口,ArrayList常用方法,ArrayList操作多个集合的交集和并集,

本文深入探讨了Java中数组与集合的区别,介绍了泛型的概念及其在集合中的应用,通过实例展示了如何使用泛型增强类型安全性,同时对比了普通方法与泛型方法的使用效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

知识点:

  1. 数组就是一种容器,可以在其中放置对象或基本类型数据;
  2. 数组的优势:是一种简单的线性序列,可以快速的访问数组元素,效率高。如果从效率和类型检查的角度讲,数组是最好的。
  3. 数组的劣势:不灵活。容量要事先定义好,不能随着需求的变化而扩容。
  4. 集合(容器):在这里插入图片描述
  5. 泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合。
  6. 泛型的本质就是:“数据类型的参数化”。我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型的时必须传入实际类型。
  7. 普通方法:
/*
测试泛型
 */
public class TestGeneric {
    public static void main(String[] args) {
        MyCollection mc = new MyCollection();
        mc.set("晚风",0);
        mc.set("花间",1);
        mc.set("寺中人",2);
        Integer a =(Integer) mc.get(1);
        String b = (String) mc.get(2);
      /*  mc.get(1);
        mc.get(2);
        mc.get(3);

       */
    }
}
class MyCollection{
    //定义一个数组
    Object[]objs=new Object[5];
    public void set (Object obj,int index){
        objs[index]=obj;
    }
    //获得索引内容
    public Object get(int index){
        return objs[index];
    }
}

  1. 泛型:
/*
测试泛型
 */
public class TestGeneric02 {
    public static void main(String[] args) {
        MyCollection02<String> mc = new MyCollection02<String>();
        mc.set("晚风",0);
        String b = mc.get(0);
    }
}
class MyCollection02<E>{
    //定义一个数组
    Object[]objs=new Object[5];
    public void set (E e,int index){
        objs[index]=e;
    }
    //获得索引内容
    public E get(int index){
        return (E)objs[index];
    }
}

1 Collection表示一组对象,它是集中,收集得意思。Collection接口的两个子接口是List,Set接口。
在这里插入图片描述
代码练习相关方法:

import java.util.ArrayList;
import java.util.Collection;

public class TestList {
    public static void main(String[] args) {
        Collection<String> c = new ArrayList<>();
        System.out.println(c.size());
        System.out.println(c.isEmpty());
        c.add("晚风");
        c.add("花间");
        c.add("寺中人");
        System.out.println(c.size());
        System.out.println(c.contains("关注我的博客"));
        Object[]objs = c.toArray();
        System.out.println(objs);

        c.remove("晚风");
        System.out.println(c);

        c.clear();
        System.out.println(c.size());

    }
}

运行结果:

0
true
3
false
[Ljava.lang.Object;@1b6d3586
[花间, 寺中人]
0

进程已结束,退出代码 0

集合的交集和并集:

import java.util.ArrayList;
import java.util.List;

public class TestList02 {
    public static void main(String[] args) {
    test01();
    }
    public static void test01() {
        List<String> list01 = new ArrayList<>();
        list01.add("aa");
        list01.add("bb");
        list01.add("cc");
        List<String> list02 = new ArrayList<>();
        list02.add("aa");
        list02.add("dd");
        list02.add("ee");
        System.out.println("list01:" + list01);
       list01.addAll(list02);
        System.out.println("list01:" + list01);
        list01.remove(list02);
        System.out.println("list01:" + list01);
        list01.retainAll(list02);
        System.out.println("list01:" + list01);
               System.out.println(list01.containsAll(list01));
    }
}

list01:[aa, bb, cc]
list01:[aa, bb, cc, aa, dd, ee]
list01:[aa, bb, cc, aa, dd, ee]
list01:[aa, aa, dd, ee]
true
### Java ArrayList 常用方法总结 #### 创建 ArrayList 对象 可以通过无参构造方法创建一个空的 `ArrayList` 实例。 ```java ArrayList<String> list = new ArrayList<>(); ``` 此代码片段展示了如何通过指定列表存储的数据类初始化一个新的空列表[^3]。 #### 添加元素到 ArrayList 使用 `add()` 方法可以向 `ArrayList` 中添加单个元素。如果需要批量添加,则可以使用 `addAll(Collection<? extends E> c)` 方法。 ```java list.add("徐冰"); list.add("萤火"); // 批量添加另一个集合中的所有元素 ArrayList<String> anotherList = new ArrayList<>(); anotherList.add("张三"); anotherList.add("李四"); list.addAll(anotherList); ``` 上述代码演示了如何分别通过 `add()` `addAll()` 向 `ArrayList` 插入数据[^1][^2]。 #### 删除 ArrayList 的元素 删除操作可通过索引或具体对象完成。 - 使用 `remove(int index)` 可按索引位置移除特定项。 - 使用 `remove(Object o)` 移除第一个匹配的对象实例。 - 调用 `clear()` 清空整个 `ArrayList`,使其变为零大小而不销毁其本身。 ```java list.remove(0); // 按索引删除 list.remove("张三"); // 按值删除 list.clear(); // 清空全部内容 ``` 这里说明了多种方式实现对 `ArrayList` 数据结构内的项目进行有效管理[^4]。 #### 获取 ArrayList 元素数量与访问元素 利用 `size()` 返回当前列表所含有的条目总数;借助 `get(int index)` 来取得某一位上的实际数值。 ```java System.out.println(list.size()); // 输出列表长度 System.out.println(list.get(1)); // 访问第二个元素 ``` #### 遍历 ArrayList 支持传统基于下标的迭代以及增强版 for-each 循环两种形式来进行遍历处理。 ```java for (int i = 0; i < list.size(); i++) { System.out.println(list.get(i)); } for(String item : list){ System.out.println(item); } ``` 前一种采用显式的计数器控制流程逐一遍访数组成员;后者则更加简洁明快适合大多数场景应用需求[^2]。 #### 列表的运算 对于两个已存在的 `ArrayList` ,能够执行诸如求交集(`retainAll`)、(`addAll`)、差(`removeAll`)之类的高级组合变换动作。这些功能均直接作用于原始目标容器之上改变内部状态达成目的效果。 ```java list.retainAll(list2); // 仅保留两者共通部分 list.removeAll(list2); // 排除掉共同拥有的成分 list.addAll(list2); // 将另一组完全吸纳进来扩充规模 ``` 以上介绍了几种常见的针对多个同构序列相互关系的操作手段及其语义含义解释[^5]。 ### 注意事项 尽管本文列举了一些常用的 API 函数调用模式供参考学习之用,但在真实开发环境中还需考虑边界条件检查等问题确保程序健壮稳定运行良好表现。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值