容器

容器

1)Collection 接口是一组允许重复的对象。

  • Set 接口继承 Collection,无序不允许重复,使用自己内部的一个排列机制。
  • List 接口继承 Collection,有序允许重复,以元素安插的次序来放置元素,不会重新排列。

2)Map 接口是一组成对的键值对象,即所持有的是 key-value pairs。Map 中不能有重复的 key。拥有自己的内部排列机制。

3)容器中的元素类型都为引用类型,不能放置原生数据类型(使用装箱即可),使用泛型保留类型

4)容器特点: 可变长,可有存储任意类型的数据,必须是引用数据类型
只能存储字符串类型的数据

容器的关系图:

在这里插入图片描述

List 接口

list的实现类
ArrayList

  • 底层实现: 是由可变数组实现的,通过数组的拷贝实现
  • 优点: 查询效率高
  • 缺点: 添加,删除效率低,需要大量的使用数组的拷贝,效率较低
  • 使用: 大量做查询的时候使用
  • 扩容机制: int newCapacity = oldCapacity + (oldCapacity >> 1); 新容量每次扩容原来的1.5倍,使用copyOf方法进行

存储自定义的引用数据类型的数据,使用任何比较数据是否相等的方 法,需要手动重写equals方法

    public class ListDemo01 {
public static void main(String[] args) {
	//泛型可以规范容器中存放的所有数据的类型
	List<Integer> list=new ArrayList<Integer>();
	list.add(11);
	list.add(22);
	list.add(33);
	list.add(44);
	
	//void add(int index, E element) 
	list.add(0,2);
	
	System.out.println(list);
	
	//E get(int index)  
	System.out.println(list.get(2));
	
	//remove(index|obj)   如果内容和索引有相同情况,以索引为主
	System.out.println(list.remove(2));
	System.out.println(list);
	// E set(int index, E element) 用指定元素替换列表中指定位置的元素(可选操作)。 
	list.set(3, 333);
	System.out.println(list);
	
	//lis的遍历方式:
	//普通for
	for(int i=0;i<list.size();i++){
		System.out.println(list.get(i));
	}
	
	//for each
	for(Integer i: list){
		System.out.println(i);
	}
	
	//iterator
	//1) 获取一个迭代器对象
	for(Iterator<Integer> it=list.iterator();it.hasNext();){
		System.out.println(it.next());
	}
}

}

Vector 向量

  • 区别:
  • 1.ArrayList线程不安全的 Vector同步的线程安全的
  • 2.ArrayList扩容原容量的1.5倍 Vector扩容原容量的2倍

LinkedList

  • 底层: 使用双向链表结构实现
  • 优点: 做增删效率高
  • 缺点: 查询效率低
  • 使用: 大量做增删的时候使用
  • 新增: 新增了一些操作于链表头尾的方法

Set

Set 无序 不可重复

  • 新增方法: 无
  • 遍历方式: 1)for each 2)迭代器
  • HashSet
  • HashSet:*** -->HashMap维护的
  • 底层结构:底层是由哈希表存储的 (数组+链表+红黑树组成)
  • 优点:添加,查询,删除效率高
  • 缺点:无序
  • HashSet存储自定义引用数据类型去重问题:我们认为内容相同就是一个对象

HashSet存储自定义引用数据类型去重问题:我们认为内容相同就是一个对象
需要重写这个类型的hashcode和equals方法,如果hashcode不相同,不会比较两个对象的equals,hashcode相等才会比较equals方法进一步比价内容

TreeSet

  • 底层结构: 红黑树

  • 优点:查询效率快,有序(默认升序,自定义排序方式)

  • 缺点:但是ArrayList,HashSet快

  • 存储自定义引用数据类型的去重+排序:存储person类型的对象数据的排序和去重问题

比较器
内部比较器|自然比较器:默认的比较方式

  • 类实现java.lang.Comparable接口,重写compareTo(T o) 方法,在方法中定义比较规则
  • 内部比较器,每次修改都要修改源码,其他类不能使用

外部比较器|自定义比较器

  • 对Comparator接口的方法compare方法进行重写,定义比较规则
  • 以外部比较规则优先,没有外部比较规则默认使用自然排序

Map

  • 每一个数据都是一个键值对形式的数据 k—v
  • key是唯一的,不可重复 —所有的key,set集合
  • value可以是任意类型的数据,value不唯一,可重复 ----所有的value,Collection集合
  • 只按照key值计算位置|去重|排序
  • 一个key只能对应一个value(一对多可以对应value是一个集合)
  • 如果key相同的数据,value会覆盖

Map 的遍历

  • 1.keySet() 根据key获取value

  • 2.values() 直接获取所有的value值

  • 3.Set<Map.Entry<K,V>> entrySet()

    System.out.println("-------keySet()------");
    /*Set<String> keys=map.keySet();
    for(String s: keys){
    	System.out.println(s+"-->"+map.get(s));
    }*/
    
    System.out.println("------- values()--------");
    Collection col=map.values();
    /*Iterator it=col.iterator();
    while(it.hasNext()){
    	System.out.println(it.next());
    }*/
    
    System.out.println("-----entrySet()--------");
    Set<Map.Entry<String, Boolean>> set=map.entrySet();
    for(Map.Entry<String, Boolean> entry : set){
    	System.out.println(entry.getKey()+"==>"+entry.getValue());
    }
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker容器是一种轻量级、可移植的虚拟化技术,用于在操作系统级别隔离应用程序和其依赖的运行环境。通过使用Docker容器,可以将应用程序及其所有依赖项打包到一个独立的、可移植的容器中,然后在任何支持Docker的环境中运行。 以下是一些常见的Docker容器相关概念和工具: 1. Docker镜像(Docker Image):Docker镜像是一个只读的模板,包含了运行应用程序所需的所有文件和依赖项。可以通过Docker镜像创建Docker容器。 2. Docker容器(Docker Container):Docker容器是Docker镜像的运行实例。每个Docker容器都是相互隔离的,具有自己的文件系统、进程空间和网络接口。 3. Docker引擎(Docker Engine):Docker引擎是Docker的核心组件,负责管理和运行Docker容器。它包括了一个守护进程(dockerd)和一组命令行工具(docker命令)。 4. Docker Compose:Docker Compose是一个用于定义和管理多个Docker容器的工具。通过编写一个YAML文件来描述应用程序的各个组件及其依赖关系,然后使用docker-compose命令来启动、停止和管理这些容器。 5. Kubernetes:Kubernetes是一个用于自动化部署、扩展和管理容器化应用程序的开源平台。它可以与Docker结合使用,提供了更高级的容器编排和管理功能。 6. Docker Hub:Docker Hub是一个公共的Docker镜像仓库,可以从中获取各种预构建的Docker镜像。同时,也可以将自己构建的镜像推送到Docker Hub上进行分享和存储。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值