摘要:
进程和线程的关系: 1.一个线程只能属于一个进程,而一个进程可以有多个线程,但至少有一个线程。 2.资源是分配给进程的,同一进程的所有线程共享该进程的所有资源 使用多线程的好处: 多线程可以提高程序的效率。 实例:寺庙里面没有水了,老和尚让小和尚去挑水,如果小和尚一个人去挑的话就需要跑四趟。但是小和 阅读全文
摘要:
Map 是一种键-值对(key-value)集合,其中,键对象不允许重复,而值对象可以重复 Map 接口主要有两个实现类:HashMap 类和 TreeMap 类。其中,HashMap 类按哈希算法来存取键对象,而 TreeMap 类可以对键对象进行排序。 上图所示既可以放String类型,又可以放 阅读全文
摘要:
TreeSet 类 TreeSet类是Set接口的一个实现类,主要作用是用于对对象的排序以及确定存入对象的唯一性. 它的底层是红黑树,用来确保元素的排序和唯一性的,基于map对象,TreeSet是对TreeMap的简单包装 红黑树: (1)每个节点或者是黑色,或者是红色。(2)根节点是黑色。(3)每 阅读全文
摘要:
一开始,set集合里面只存进一个对象, 存第二个对象时候,由于重写了hashcode方法,只要价格都是10就返回1,所以hashcode一样的话,再去进行equals方法判断,此时这个也重写了,this代表的当前这个要想集合里面添加的对象, 也就是two,而括号里面传的要比的对象,也就是one,因为 阅读全文
摘要:
以下面book这个类来说,它的hash值默认是按照里面的属性,进行循环 如上图所示,这里会进行循环遍历里面的值,最后会得到有个累加的值。 这是测试类: 这是实例对象,里面重写了equals方法和hashcode方法 第一次add的时候,集合里面没有对象,对象实例化,然后进入hashcode方法,返回 阅读全文
摘要:
set是一个没有重复元素, 没有存储顺序的集合,它主要有三个实现类,如下: HashSet 类 HashSet 类是按照哈希算法来存储集合中的元素,当向 Set 集合中添加一个元素时,HashSet 会调用该元素的 hashCode() 方法,获取其哈希码,然后查找集合中是否有哈希值相同的对象, 如 阅读全文
摘要:
List 中元素是有序的,元素可以重复,因为该集合体有索引 ArrayList: 底层数据结构是数组,查询快,增删慢。 线程不安全,效率高。 当元素放满了后,默认以原长度的 50%+1 的长度加长集合容器的长度。 LinkedList: 底层数据结构是链表,查询慢,增删快。 线程不安全,效率高。 V 阅读全文
摘要:
Vector: 它底层也是用数组来存数据对象的,但它是唯一一个线程安全的,线程安全也就意味着时间长,效率慢,如果是单一线程的话,建议不使用该实现类 add(E element): 将指定的元素追加到此Vector的末尾 add(int index,E element): 在此Vector中的指定位置 阅读全文
摘要:
LinkedList: 底层是一个双向链表,方便数据的频繁出入。便于快速插入,删除元素,不太方便进行查询 toArray(): 以正确的顺序(从第一个到最后一个素)返回一个包含此列表中所有元素的数组 size(): 返回此列表中的元素数 set(int index,E element): 用指定的元 阅读全文
摘要:
如上图所示,list集合是 Collection 接口的子接口,它是一个元素有序(每个元素都有对应的顺序索引,第一个元素索引为0)、且可重复的集合,他有三个实现类,如下: ArrayList add方法,用来向集合增加元素的 List<String> list=new ArrayList<>();l 阅读全文