java高级 list接口与set接口

本文介绍了Java集合框架中List接口及其子类ArrayList、LinkedList和Vector的特点,强调了有序性、索引和重复元素的处理。同时,解释了Set接口不允许重复元素的原理,关注了HashSet、LinkedHashSet的内部结构和哈希值概念。还讨论了自定义类在HashSet中如何避免重复元素的问题,强调了重写hashCode和equals方法的重要性。

1List接口特点:1是一个有序的集合,存储元素和取出元素的顺序是一样的(存123,取123)

                          2有索引,可使用带索引的方法

                          3允许存储重复的元素 

2List的子类集合:1ArrayList:查询快 增删慢。底层是一个数组结构

                              2LinkedList(链表结构):其中包含了大量操作首尾元素的方法,注意,使用

                                                                        LinkedList集合特有的方法不能使用多态

                                            

                              3Vector:同步 单线程 相对较慢,JDK1.0版本的早期集合。

3Set接口特点:1不允许存储重复元素2没有索引,不能通过普通for循环遍历

                            Set不重复原理:Set接口在每次使用add添加元素时,还会默认使用

                           .hashCode方法和equals方法来比较是否重复

4Set接口的子类:1HashSet:底层是一个哈希表解构,是一个无序的集合,存储和取出元素的

                                                 顺序有可能不一样。               

package com.bed.javahighclass;

import java.util.Iterator;
import java.util.Set;

public class HashSet {
    public static void main(String[] args) {
        Set<String> set=new java.util.HashSet<>();
        set.add("b");
        set.add("e");
        set.add("d");
        set.add("b");
        set.add("a");
        set.add("c");

        final Iterator<String> it = set.iterator();
        while(it.hasNext()){
            String s=it.next();
            System.out.println(s);//结果为abcde
        }
    }
}

                                        此时显示的结果就是abcde  顺序没有按照存储顺序,也没有重复元素

                        2LinkedHashSet:在哈希表结构中又加入了一条链表,用来记录元素的存储顺序

                        3哈希值:一个十进制的整数,由系统随机给出(sout中对象的@xxxxxxxx就是哈

                                        希值的十六进制表达方式),是一个逻辑地址,而不是实际存储的物理地

                                        址,在Object类里面有一个方法 int xxx.hashCode;可以获取对象的哈希

                                        值,此方法的源码为public native int hashCode();native表示该方法

                                        是本地操作系统的方法。(该方法也可以重写)

                                        (String类的哈希值重写了hashCode的方法)

                        4哈希表解构:数组+红黑树解构。在一个十六位的数组结构中,相同哈希值的

                                                元素(超过八位)会通过链表或红黑树连接在一起。

 5在hashSet中添加自定义类:如果自定义类新建对象属性有重复时(例:同名同年龄),由于是

                                                新建对象,地址值不同,哈希值也不同,此时的hashSet是无法甄别

                                                相同元素的,需要重写hashCode和Equals方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值