Java基础之集合基础

举报
袁袁袁袁满 发表于 2022/04/20 21:10:55 2022/04/20
【摘要】 1.1 集合介绍集合提供一种存储空间可变的存储模型,存储的数据容量可以改变ArrayLis<>:可调整大小的数组实现<>:是一种特殊的数据类型,泛型可储存重复元素怎么使用呢在出现E的地方我们使用引用数据类型替换即可举例:ArrayList<String>、ArrayList<Student> 1.2 集合类型Collection 接口的接口 对象的集合(单列集合)List 接口:元素按进入...

1.1 集合介绍

  • 集合提供一种存储空间可变的存储模型,存储的数据容量可以改变
  • ArrayLis<>:
    • 可调整大小的数组实现
    • <>:是一种特殊的数据类型,泛型
    • 可储存重复元素
  • 怎么使用呢
    • 在出现E的地方我们使用引用数据类型替换即可
    • 举例:ArrayList<String>、ArrayList<Student>

1.2 集合类型

Collection 接口的接口 对象的集合(单列集合)

  • List 接口:元素按进入先后有序保存,可重复
    • LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全
    • ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全
    • Vector 接口实现类 数组, 同步, 线程安全
    • Stack 是Vector类的实现类
  • Set 接口: 仅接收一次,不可重复,并做内部排序
    • HashSet 使用hash表(数组)存储元素
    • LinkedHashSet 链表维护元素的插入次序
    • TreeSet 底层实现为二叉树,元素排好序

Map 接口 键值对的集合 (双列集合)

  • Hashtable 接口实现类, 同步, 线程安全
  • HashMap 接口实现类 ,没有同步, 线程不安全-
    • LinkedHashMap 双向链表和哈希表实现
    • WeakHashMap
  • TreeMap 红黑树对所有的key进行排序
  • IdentifyHashMap

1.3 集合与数组的区别

1、数组声明了它容纳的元素的类型,而集合不声明。

2、数组的长度是固定的,集合长度是可以改变的。

数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。而集合是可以动态扩展容量,可以根据需要动态改变大小,集合提供更多的成员方法,能满足更多的需求。

3、数组的存放的类型只能是一种(基本类型/引用类型),集合存放的类型可以不是一种(不加泛型时添加的类型是Object)。

4、数组是java语言中内置的数据类型,是线性排列的,执行效率或者类型检查都是最快的。

5、集合以接口和类的形式存在,具有封装,继承和多态等类的特性,通过简单的方法和属性调用即可实现各种复杂的操作,大大提高软件的开发效率。

  • 共同点:都是存储数据的容器
  • 不同点:数组的容量是固定的,集合的容量是可变的

1.4 ArrayList 构造方法和添加方法

在这里插入图片描述

import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array = new ArrayList<>();
        System.out.println(array); //[]

        //添加到集合末尾
        array.add("hello");
        array.add("word");
        array.add("java");
        System.out.println(array); //[hello, word, java]

        //指定位置,添加元素
        array.add(1,"javase");
        System.out.println(array); //[hello, javase, word, java]

        array.add(4,"javaee");
        System.out.println(array); //[hello, javase, word, java, javaee]

        array.add(6,"javaweb"); 
        System.out.println(array); //IndexOutOfBoundsException,不能中间跳一个位置
    }
}

1.5 ArrayList 常用方法

方法名 说明
public boolean remove(Object o) 删除指定的元素,返回删除是否成功
public E remove(int index) 删除指定索引处的元素,返回被删除的元素
public E set(int index,E element) 修改指定索引处的元素,返回被修改的元素
public E get(int index) 返回指定索引处的元素
public int size() 返回集合中元素的个数
  • 范例:
import java.util.ArrayList;

public class Demo {
    public static void main(String[] args) {
        //创建集合对象
        ArrayList<String> array = new ArrayList<>();
        System.out.println(array); //[]

        //添加到集合末尾
        array.add("hello");
        array.add("word");
        array.add("java");
        System.out.println(array); //[hello, word, java]

        //1,public boolean remove(Object o) 	删除指定的元素,返回删除是否成功
//        System.out.println(array.remove("hello")); //true; 集合变为[word, java]
//        System.out.println(array.remove("javase")); //false; 集合变为[hello, word, java]

        //2,public E remove(int index) 	删除指定索引处的元素,返回被删除的元素
//        System.out.println(array.remove(1)); //word,集合变为[hello, java]

        //3,public E set(int index,E element) 	修改指定索引处的元素,返回被修改的元素
//        System.out.println(array.set(1,"javase")); //word;集合变为[hello, javase, java]

        //4,public E get(int index) 	返回指定索引处的元素
//        System.out.println(array.get(0)); //hello
//        System.out.println(array.get(1)); //word
//        System.out.println(array.get(2)); //java

        //5,public int size() 	返回集合中元素的个数
        System.out.println(array.size()); //3
    }
}
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。