JAVA自学整理7

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集合中的元素将进行遍历

猜你喜欢

转载自blog.csdn.net/lvyangxue/article/details/106673876