【JavaSE】集合(Collection类)

1.集合框架

1.1 collection

在这里插入图片描述

1.2 map

在这里插入图片描述

2. collection

查文档。

2.1.集合迭代

package com.sdnu.javase.collection;

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

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: CollectionTest01
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/26 15:32
 * @version: 1.0
 */
public class CollectionTest01 {
    public static void main(String[] args) {
        Collection numberCollection = new ArrayList();
        numberCollection.add(12);
        numberCollection.add(24);
        numberCollection.add(67);
        Iterator  it = numberCollection.iterator();
        while(it.hasNext()){
            System.out.println(it.next());
        }
    }
}

2.2.contains和remove

contains和remove底层都调用了equals。

2.3集合中元素的删除

当集合结构发生改变时,迭代器必须重写获取。
删除元素使用:迭代器.remove()
(不要使用 集合.remove())

3.List

文档

4.ArrayList

  • 默认初始化容量为10(底层先创建一个初始化长度为0的数组,添加元素后,长度初始化为10)
  • 底层是一个Object类型的数组
  • 构造方法:new ArrayList() new ArrayList(指定容量)
  • 扩容到1.5倍
  • 检索效率高,增删效率低
  • 向数组末尾添加元素效率高

HashSet转成ArrayList:

Collection c = new  HashSet();
List myList = new ArrayList(c);

非线程安全变成线程安全:

List myList = new ArrayList();
Collections.synchronizedList(myList);

5.LinkList

随机增删效率高,检索效率低。

6.Vector

  • 初始容量为10
  • 扩容为原来的2倍
  • 线程安全的

7.泛型

7.1泛型初步

package com.sdnu.javase.collection;

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

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: GenericTest01
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/27 17:21
 * @version: 1.0
 */
public class GenericTest01 {
    public static void main(String[] args) {
        List<Animal> myList = new ArrayList<Animal>();
        Cat c = new Cat();
        Bird b = new Bird();
        myList.add(c);
        myList.add(b);
        Iterator<Animal> it = myList.iterator();
        while (it.hasNext()){
            Animal obj = it.next();
        }
    }
}

class Animal {
    public void move(){
        System.out.println("动物在移动");
    }
}

class Cat extends Animal{
    public void catchMouse(){
        System.out.println("猫抓老鼠");
    }
}

class Bird extends Animal {
    public void fly(){
        System.out.println("鸟儿在飞翔");
    }
}

使用泛型指定集合中存储的类型。

不使用则Animal obj = it.next();报错。

7.2自动类型推断机制

List<Animal> myList = new ArrayList<>();

7.3 自定义泛型

package com.sdnu.javase.collection;

/**
 * @projectName: javase
 * @package: com.sdnu.javase.collection
 * @className: Test03
 * @author: Beyong
 * @description: TODO
 * @date: 2023/2/27 17:54
 * @version: 1.0
 */
public class Test03<T> {
    public void method(T obj){
        System.out.println(obj);
    }

    public static void main(String[] args) {
        Test03<String> myTest = new Test03<>();
        myTest.method("pppp");
        // 错误:myTest.method(123);
    }
}

8.增强for循环

for(元素类型 变量名:数组或者集合){
}

9.Set

9.1HashSet

特点:无序不可重复。
(无序指的是存放进去的顺序和取出来的顺序不同)

9.2 TreeSet

特点:无序不可重复,但是可以排序。
(这里无序指的是存放进去的顺序和取出来的顺序不同,可以排序指的是集合中的元素可以排序。)

在这里插入图片描述

作者:Beyong    
出处:Beyong博客
github地址 https://github.com/beyong2023

本博客中未标明转载的文章归作者Beyong有,欢迎转载,但未经作者同意必须保留此段声明,且在文章明显位置给出原文连接,否则保留追究法律责任的权利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值