TreeSet集合概述和特点
特点
1.元素有序,并非迭代顺序有序,而是元素按照一定的规则进行排序,具体顺序取决去TreeSet集合的构造方法
无参构造
TreeSet<E> set=new TreeSet<>()
默认排序方式为Comparable接口进行的自然排序
若泛型E为自定义类型,那么该自定义类型需要 implement Comparable<自定义类名称>,并重写compareTo()方法
在方法中规定自定义类中哪些作为主要排序依据,哪些作为次要
注意点:重写compareTo()后的返回值,若为0代表视为类的对象相等,1代表升序(),2代表降序
有参构造
TreeSet<E> set=new TreeSet<Comparator<? super(E)> comparator) //参数为Comparator接口的比较器对象
排序方式需要重写 compare()方法 在方法中规定排序的规则
2.没有带索引方法,无法使用普通for循环进行遍历(可用增强for,迭代器遍历)
3.元素唯一(根据comparable自然排序或者comparator整体排序,同一元素不会被重复添加)
Comparable (自然排序接口):该接口对实现其的每个类的对象,做了一个自然排序
Comparator(比较器排序接口):拥有比较功能,对集合中存放的元素,进行了一个强制性的整体排序
使用方法:直接利用匿名内部类方式创建对象作为TreeSet的参数,并覆盖重写compare方法
TreeSet<E> set=new TreeSet<Comparator<? super(E)> comparator {
@Override
public int compare(Object 1,Object 2){
//比较方式
} //若返回值为0代表两参数相同,不会添加第二次
泛型
定义:提供了编译时,类型检测机制,该机制允许在编译时检测非法类型
泛型类
格式:修饰符 class 类名<类型>{}
例:public class Generic <T>{}
T可以换成任意标识,常规T,E,K,V常用于表示泛型
创建泛型类对象后,想存入哪种数据就将T改为其数据类型
例:Generic<String> g1=new Generic();
Generic<自定义类> g2=new Generic();
泛型方法:调用泛型方法,输入不同类型的数据,且不需要方法重载
public <T> void method(T t){}
类型通配符:表示各种泛型list集合的父类 <?>
List<?>:表示list集合中元素类型未知,可以存放任意的引用数据类型,使用此创建对象时,不能存放元素
类型通配符上限:<?extends 类型>
例:List<? extends Number>;//表示list集合中存放的元素类型必须是Number类型或Number子类类型
类型通配符下限:<?super 类型>
例:List<? super Number>;//表示list集合中存放的元素类型必须是Number类型或Number父类类型
可变参数
定义:可变参数又称参数可变,用作方法的形参出现,那么该方法的参数就是可变的了
格式:修饰符 返回值类型 方法名(数据类型…变量名){}
注意:此时变量实际为数组名,可变参数实际是指将不同数量的数据存入数组中进行操作
例: public int method(int...a);//实际为将传入方法的参数,存入int [] a中
若一个方法包含多个参数,且其中参数包含可变参数,那么可变参数要写在最后防止,参数传入错误
例:public void method(int a,int b,int...c){}
可变参数的使用
1.Arrays工具类中有一个静态方法
public static< T> list< T > asList<T…a>:返回由指定数组支持的固定大小list集合,返回的集合不能进行增删操作,但是元素内容可以修改
2.List接口中有一个静态方法
public static < T > list< T > of(E…elements):返回包含任意数量元素的不可变集合,返回的集合不能进行增删操作,也不能修改内容,元素可重复
3.Set接口中有一个静态方法
public static < T > set< T > of(E…elements):返回包含任意数量元素的不可变集合,返回的集合不能进行增删操作,也不能修改内容,元素不可重复
Map集合概述和使用
Interface Map<K,V>
K:map接口维护的键的数据类型
V:键所映射值的数据类型
注意:Map集合中不能由重复的键,每个键映射到最多一个值,若后续添加的键与之前的键重复,那么后添加键所映射的值会将之前的键映射的值进行覆盖。
Map接口的实现类之一hashMap,底层数据结构为哈希表
Map集合的基本功能
1.V put(K key,V value):向集合中添加元素,若新添加的键与之前的键重复,那么后添加键所映射的值会将之前的键映射的值进行覆盖。保证了元素的唯一性
2.V remove(Object key):删除指定键值的元素,并返回该键值映射的值,若键不存在返回null
3.void clear():清空集合元素
4.boolean containsKey(Object key):判断集合是否包含指定的键
5.boolean containsValue(Object value):判断集合是否包含指定的内容
5.boolean isEmpty():判断集合是否为空
7.int size():集合长度,即集合中元素个数
集合获取功能
1.V get(Object key):根据指定键,返回集合中该键映射的值,若键不存在返回null
2.Set< K > keySet():将集合中所有键,并这些键存入set集合进行返回
3.Collection< V > value():将集合中所有映射的值,存入collection集合并进行返回
Map集合遍历方式
1.利用keySet()方法,获取所有键的set集合,利用增强for,在增强for中调用get(Object key)方法获取键映射的值 进行遍历
例:Set<K> set=map.keySet();
for(K a:set){
sout(a+","+a.get(a));
2.利用entrySet方法,获取所有键值对对象集合 返回值为Map.Entry<K,V>接口 存入set集合,利用Map.Entry<K,V>接口的 getkey()方法和getvalue()方法对 set集合中的元素将进行遍历