Java--容器介绍

容器(集合框架):

  • 容器:承载其他对象的对象

  • 父类接口:Collection

  • 子类接口:List、Set

  • 实现List接口的常用类:
    1.ArrayList
    底层实现是一个数组,使用连续内存,可以实现随机存取
    2.LinkedList
    底层实现是一个双向循环链表,可以使用碎片内存,不能随机存取,但是增删元素只需要修改引用即可,所以增删元素时有更好的性能。

  • 容器里放的是对象类型的引用,放不了基本数据类型
    所以想容器中添加基本数据类型时会自动装箱(auto-boxing)
    自动装箱:就是将基本数据类型处理成对应的包装类型

基本类型 ---> 包装类型
byte ---> Byte
short ---> Short
int ---> Integer
long ---> Long
float ---> Float
double ---> Double
char ---> Character
boolean ---> Boolean

public static void main(String[] args) {
        Object object1 = 100;//自动装箱
        System.out.println(object1.getClass());
        Integer object2 = (Integer) object1;
        int a = object2;//自动拆箱
        int b = (Integer) object1;
        System.out.println(a);
        System.out.println(b);
        
        List list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            //自动装箱int ---> Integer对象
            list.add((int) (Math.random() * 20));
        }
        for (Integer x : list) {
            //自动拆箱(auto-unboxing)Integer对象--->int
            if (x > 10) {
                System.out.println(x);
            }
        }
    }
  • 泛型参数:
    从Java 5开始容器可以指定泛型参数来限定容器中对象引用的类型
    从Java 7开始,构造器后面的泛型参数可以省略 - 钻石语法
    List list = new ArrayList<>();

  • 容器的遍历:
    1.for-each

list.forEach(System.out::println);

forEach方法的参数可以是方法引用也可以是Lambda表达式

list.forEach(e -> {
            System.out.println(e.toUpperCase());
        });

2.for循环

for (int i = 0; i < list.size(); i++) {
            System.out.println(list.get(i));
        }

3.迭代器(Iterator)

Iterator iterator = list.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
  • 容器中的一些方法
    1.添加
    list.add("apple");
    2.根据指定参考系删除所有
    list.removeAll(temp);
    3.根据指定的参考系保留所有
    list.retainAll(temp);
    4.清空
    list.clear();

你可能感兴趣的:(Java--容器介绍)