TreeSet,Map,Collections,多线程

TreeSet:无序,不可重;

底层结构式是红黑树进行存储;

特点:默认从小到大排序;

TreeSet,Map,Collections,多线程_第1张图片

 

 

 可以定义比较规则,排序规则,并且可以使用去重原则:

内部比较器|自然排序: 实现Comparable接口,重写comparaTo方法,在方法中定义比较规则.,默认的比较规则;

 

TreeSet,Map,Collections,多线程_第2张图片

 

 

 TreeSet,Map,Collections,多线程_第3张图片

 

 

 

 

外部比较器|指定比较器:实现一个Comparator接口,重写compare()方法,方法的内部定义比较规则

TreeSet,Map,Collections,多线程_第4张图片

 

 

 Map:存储的每一个数据都是一个键值对形式存在的  k,v——key 无序的,唯一的 -->就是一个set集合;value 无序的,可重复的

特点:

1.如果存储数据的时候,key相同,value的值会覆盖

 

2.如果一个key,想要对象多个value值,可以把多个value存在一个容器中,而容器对象但是一个

3.HashMap如果key是自定义的引用数据类型,去重问题:需要给key数据的类型重写hashcode和equals方法,能达到去重特点——key的值相同value的值不覆盖,需要在put之前进行判断。

TreeSet,Map,Collections,多线程_第5张图片

 

 

 TreeaMap:

特点::其中数据会自动升序排序

根据学生的身高进行排序:

实现的步骤:

  1.去重  实现内部|外部比较器 比较的原则根据key,不能根据value  

  2.根据需求排序

Properties Properties 可保存在流中或从流中加载。 key与value都是字符串类型的数据

配置文件使用:

  1.项目右键->source floder->file->添加键值对类型的数据

  2.通过Properties 的load方法,从资源文件中获取资源流,读入数据

Collections:

Collections操作容器的工具类:
      void sort(List) //对 List 容器内的元素排序,按照升序进行排序。
      void shuffle(List) //对 List 容器内的元素进行随机排列
      void reverse(List) //对 List 容器内的元素进行逆续排列
      void fill(List, Object) //用一个特定的对象重写整个 List 容器
      int binarySearch(List, Object)//采用折半查找的方法查找特定对象

多线程:

线程和进程之间的区别:略

多线程的开启方式:

  1. 继承Thread类,重写run()方法,在方法中定义多线程的线程体
  2. 实现Runnable接口,重写run()方法,在方法中定义多线程的线程体 ---推荐
  3. 实现Callable接口,重写call()方法,在方法中定义多线程的线程体

1.继承Thread类,重写run()方法,在方法中定义多线程的线程体

TreeSet,Map,Collections,多线程_第6张图片

 

 2.实现Runnable接口,重写run()方法,在方法中定义多线程的线程体 ---推荐

特点:接口可以多实现,类只能单继承;实现资源共享

TreeSet,Map,Collections,多线程_第7张图片

 

 

  

 

 

 

你可能感兴趣的:(TreeSet,Map,Collections,多线程)