Collection集合

超详细集合架构图

首先是collection集合(单列集合):

首先是list集合:

list是有序集合,用户可以精准看到每个集合的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素

list集合特点:有序,允许重复的元素,元素存取有序

list集合的迭代器:

通过list集合的Listlterrator()方法得到,所以说他是集合list特有的迭代器

用于允许程序员沿任一方向遍历的列表迭代器,在迭代期间修改列表,并获取列表中迭代器的当前位置

List<String> list = new ArrayList<String>(); //创建集合对象
list.add("hello"); //添加元素
list.add("world");

ListIterator<String> lit = list.listIterator(); //获取列表迭代器
while (lit.hasNext()) {
    String s = lit.next();
    if(s.equals("world"))  lit.add("javaee"); 
}

ArrayList:底层是数组结构实现,查询快,增删慢(动态数组)

泛型的使用:约束集合中的存储数据类型

创建集合对象:

//创建ArrayList集合对象
ArrayList<Student> array = new ArrayList<Student>();
Student s1 = new Student("林青霞", 30);
Student s2 = new Student("张曼玉", 35);
array.add(s1);
array.add(s2);

//迭代器:集合特有的遍历方式
Iterator<Student> it = array.iterator();
while (it.hasNext()) {
    Student s = it.next();
    System.out.println(s.getName() + "," + s.getAge());
}

//普通for:带有索引的遍历方式
for(int i=0; i<array.size(); i++) {
    Student s = array.get(i);
    System.out.println(s.getName() + "," + s.getAge());
}

//增强for:最方便的遍历方式
for(Student s : array) {
    System.out.println(s.getName() + "," + s.getAge());
}

Linkedlist:

LinkedList:底层是链表结构实现,查询慢,增删快(底层:双向链表)

、Set 无序集合:

Set集合的特点:元素存取无序、没有索引(只能迭代器/增强for循环遍历)、不能存储重复元素

哈希值:

Hash值:是JDK根据对象的地址/字符串/数字算出来的int类型的数值
如何获取哈希值:Object类中的public int hashCode():返回对象的哈希码值
哈希值的特点
同一个对象多次调用hashCode()方法返回的哈希值是相同的
默认情况下,不同对象的哈希值是不同的。而重写hashCode()方法,可以实现让不同对象的哈希值相同

hashSet:

  • 底层数据结构是哈希表
  • 对集合的迭代顺序不作任何保证,也就是说不保证存储和取出的元素顺序一致
  • 没有带索引的方法,所以不能使用普通for循环遍历
  • 由于是Set集合,所以是不包含重复元素的集合

TreeSet

TreeSet:元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法

Map集合:

Map集合特点 :key:value对映射关系、键不能重复,值可以重复、元素存取无序

HashMap ⭐
:::tips
概述:HashMap使用哈希表来存储数据,通过计算键的哈希值来确定其在内部数组中的存储位置。

HashMap的键是唯一的,如果插入相同的键,新的值会覆盖旧的值。它不保证键值对的顺序,也不保证插入顺序和访问顺序一致。
使用HashMap可以快速地插入、获取、更新和删除键值对,其时间复杂度为O(1)。它是线程不安全的,需要在多线程环境下使用可以使用ConcurrentHashMap。
HashMap在遍历时,不保证元素的顺序,如果需要有序遍历,可以考虑使用LinkedHashMap。此外,由于哈希碰撞的存在,当键的哈希值相同时,会使用链表或红黑树等数据结构来解决冲突,以保证性能。

  • 增加(put)操作:添加键值对的时间复杂度为O(1)。
  • 删除(remove)操作:删除键值对的时间复杂度为O(1)。
  • 修改(put)操作:修改键值对的时间复杂度为O(1)。
  • 查找(get)操作:根据键获取值的时间复杂度为O(1)。
                   

博客内容均系原创,未经允许严禁转载!
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇