笔记:集合,this关键字理解

1.System.exit(0)

无论程序怎么样,finally里的程序必须执行
除非前面有System.exit(0);停止虚拟机出现。

2.Collections的shuffe()方法;

Collections有个方法shuffe使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的

斗地主生成牌,洗牌,发牌,看牌的实现;

生成牌:

有54张牌,一个编号对应一个牌;

ArrayList存储编号;HashMap存牌,ArrayLis作为key是编号,值是牌;

一个Strings[]存1-K的13张牌,一个Strings[]存四个花色;

HashMap的0和1存储大王和小王;

两个嵌套for生成其他52张牌。

洗牌:

利用Collections集合shuffe()方法,打乱ArrayList的54个编号顺序,这样就相当于HashMap顺序变了,达到洗牌效果。

Collections.shuffle(ArrayList);

发牌:

ArrayList循环,留下三张牌;其余的判断能否被三整除,按余数发牌,将其存在三个新建的ArrayList中

看牌:

用新建的ArrayList中17个数据,从HashMap中取出对应的value。

3.集合的并发修改异常理解

集合在遍历时,你突然修改了集合中的一个值,或添加,引起索引混乱出现并发异常:

java.util.ConcurrentModificationExcepton 并发修改异常

4.数据库未连接异常

Initializiing Spring root web Application.context

5.java中接口的理解

1.包含方法和属性(成员变量)

其中方法都是抽象方法,即只有方法名没有方法体的形式。

所有成员变量都是常量没有变量

2.接口存在的意义:接口的存在是根据外部的功能而存在的

3.接口思想:封装

4.接口和抽象类:优先选用接口

6.this关键字

当成员变量和局部变量重名的时候,java的就近原则在局部方法里将会优先使用局部变量。

想要获得成员变量的时候就得使用this关键字

this是本类对象的引用,那个对象调用,this就隶属那个对象,而对象是堆内存地址,this也就变成了堆内存首地址。成员变量在堆内存中因此this也就成为了指向成员变量的对象

例如:set的赋值:

    public void setBirthDate(String birthDate) {
        this.birthDate = birthDate;
    }

此处set参数值birthDate是局部的,this.birthDate是当前类的。

7.Set接口的实现类

/*
b)	常用实现类:
    i.	HashSet:此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。

    ii.	LinkedHashSet:可保证迭代顺序。

    iii. TreeSet:要求加入其中的元素必须实现java.lang.Comparable接口,
    通过Comparable接口实现的规则来确定元素在TreeSet中的顺序。
    当加入一个元素e时会将TreeSet中的每个元素与加入元素e进行比较
    即调用元素实现的接口Comparable.compareTo(Object o)方法来确定e所在TreeSet中的位置。

    c)	常用方法:Iterable <--java.util.Collection <-- [List, Set]
    i.	add(Object o):如果 set 中尚未存在指定的元素,则添加此元素。
    ii.	addAll(Collection  c) :如果 set 中没有指定 collection 中的所有元素,则将其添加到此 set 中。
    iii. clear() : 移除此 set 中的所有元素。
    iv.	contains(Object  o):如果 set 包含指定的元素,则返回 true。
    v.	isEmpty() :如果 set 不包含元素,则返回 true。
    vi.	iterator() :返回在此 set 中的元素上进行迭代的迭代器。
    vii. remove(Object  o) : 如果 set 中存在指定的元素,则将其移除。
    viii. size() :返回 set 中的元素数(其容量)。
*/

1.HashSet集合,本质是HashMap;特点:无序,存储和取出顺序不同,不存储重复元素,代码上和ArrayList一样。

2.set接口的使用,特点:不重复元素,没索引;

3.LinkedHashSet基于链表的哈希表实现,继承自HashSet,特点:有序,线程不安全。

4.面试题:

  • 两个对象哈希值相同,p1.hashCode()==p2.hashCode(),两个对象的equals不一定是true;
  • 两个对象的equals是true,则两个对象的hashCode一定相同;

8.java存储结构

堆栈(先进后出),队列(先进先出),数组(按下标查询简单),链表(增删简单)

9.list接口

在这里插入图片描述

1.三大特性:有序,有索引,可重复。

10.迭代器并发异常

在这里插入图片描述
在用迭代器遍历集合时,对集合中的内容进行了修改或修改了集合的长度。

11.map

/*
       Map接口的实现之一:
       i.	HashMap:允许使用 null 作为值和 null 作为键,非线程安全,不能保证元素的顺序性。
       i.   HashTable:不允许null键和null值。与HashMap(非线程安全)相似但它是多线程安全的。
       ii.	LinkedHashMap:Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。
            此实现与 HashMap 的不同之处在于,后者维护着一个运行于所有条目的双重链接列表。
            LinkedHashMap是HashMap的子类,它具有Map结构的同时,还具有链表的顺序性。

       d)	Map常用方法:
       i.	clear() :清空集合,从此映射中移除所有映射关系。
       ii.	boolean containsKey(Object  key) :如果此映射包含指定键的映射关系,则返回 true。
       iii. boolean containsValue(Object value):
       		如果此映射将一个或多个键映射到指定值(遵循 == 或equals()方法协定),则返回 true。
       iv.	entrySet() :返回此映射中包含的映射关系的 Set 视图。
       v.	keySet() :返回此映射中包含的键的 Set 视图。
       vi.	get(Object key) :返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null。
       vii. put(K key, V value):将指定的值与此映射中的指定键关联。
       viii. remove(Object key):如果存在一个键的映射关系,则将其从此映射中移除。
       ix.	size() :返回此映射中的键-值映射关系数。
       x.	Collection values() : 返回此映射中包含的值的 Collection 视图。
*/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值