集合的存与取2

一、泛型:

 定义格式:修饰符 class 类名<代表泛型的变量> { }  注意:代表泛型的变量是引用数据类型 不是基本数据类型;

 

  例:List<Integer> list = new ArrayList<Integer>();

含有泛型的接口:

 定义格式:修饰符 interface接口名<代表泛型的变量> { } 

使用泛型的好处:将运行时期的ClassCastException,转移到了编译时期变成了编译失败。避免了类型强转的麻烦。

 

 集合中添加元素时候 在编译期间会报错;

二、当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符<?>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用

三、List集合存储数据  

数据存储的常用结构有:堆栈、队列、数组、链表。

特点

堆栈:先进后出(类似于弹夹);

队列:先进先出(排队 过安检);

数组:查找快 增删慢(有下标 数组长度不可变);

链表:增删快 查找慢(无下标);

四、LinkedList集合(链表)

 

 五、Vector集合(数组)

 

 六、set接口:它里面的集合,所存储的元素就是不重复的。

原因如下:当调用set集合中add方法时候,先去调用存入的值的这个数据类型中的hashcode方法计算哈希值,然后拿着哈希值去集合中找是否有这个哈希值,如果没有,将元素存入,如果有,再调用这个数据类型中的equals方法比较内容,如果内容相同,将元素存入,如果内容相同,丢掉不存;

七、HashSet中存储JavaAPI中提供的类型元素时,不需要重写元素的hashCode和equals方法,因为这两个方法,在JavaAPI的每个类中已经重写完毕,如String类、Integer类等。存储自定义类元素时候需进行重写;

 

八、存入元素有序输出 使用:LinkedHashSet

Set<String> set = new LinkedHashSet<String>();

复制代码
public class LinkedHashSetDemo {
    public static void main(String[] args) {
        Set<String> set = new LinkedHashSet<String>();
        set.add("bbb");
        set.add("aaa");
        set.add("abc");
        set.add("bbc");
Iterator it = set.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }
    }
复制代码

 

输出结果如下,LinkedHashSet集合保证元素的存入和取出的顺序:
bbb
aaa
abc
bbc

 

posted @   丿狂奔的蜗牛  阅读(195)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程
点击右上角即可分享
微信分享提示