2020-09-16

复习day0728

Map集合及其子类、比较器、arrays类、collection类、泛型。

public static void main(String[] args) {
	HashMap<Integer, String> hm = new HashMap<>();
	hm.put(0, "c");
	hm.put(1, "b");
	System.out.println(hm.get(1));
	System.out.println(hm);

}

返回类型

方法

描述

Object

get(Object key)

根据key取得value

Object

put(Obejct k,Object v)

向集合中加入元素

void

clear()

清除Map集合

boolean

isEmpty()

判断集合是否为空

boolean

containsKey(Object object)

判断指定的key是否存在

boolean

containsValue(Object value)

判断指定的value是否存在

Set

keySet()

Map中所有的key的集合

Object

remove(Object key)

根据key删除对应的value

Collection

values()

取出全部的value

int

size()

获得集合的长度

 

hashMap与hashTable区别

  1. 都是以hashSet作为保存key的数组
  2. hashTable的key与value不能为null
  3. 初始值hashMap 16  hashTable 11
  4. 增长量 hashMap*2    hashTable *2+1
  5. 安全性 hashMap线程不安全   hashTable线程安全

    数据关系

    一对一

    Key与value都为指定对象保存指定值,根据key可以获取value值(是所有数据关系的根本)

    HashMap<String, String> hm1=new HashMap<String, String>();

    一对多

    可以通过一个key获取多个值

    HashMap<String, String[]> hm2=new HashMap<String, String[]>();

    多对一

    可以根据保存多个值的对象获取value值

    HashMap<String[], String> hm3=new HashMap<String[], String>();

    多对多

    可以根据保存多个值的对象获取多个值

    HashMap<String[], String[]> hm4=new HashMap<String[], String[]>();

Arrays工具类

数组工具类,提供了对数组操作的方法

int[] arr= {8,5,1,2,6,7,4,9,3};
		//只能对数值类型进行自动排序
		//因为其包装类实现了比较方法
		Arrays.sort(arr);
		for (int i : arr) {
			System.out.print(i+" ");
		}

Collections工具类

集合工具类,提供了对集合操作的方法

ArrayList<Integer> arr = new ArrayList<Integer>();
		arr.add(9);
		arr.add(5);
		arr.add(8);
		arr.add(7);
		arr.add(4);
		arr.add(6);
		arr.add(3);
		arr.add(1);
		arr.add(2);
		Collections.sort(arr);//自动排序
		Collections.shuffle(arr);//打乱
		System.out.println(arr);

PS:集合与数组工具类都可以对基本数值进行排序,是因为其内部实现了排序的规则,对于我们自定义的类型对象集合和数组而言,就不能直接使用排序方法进行排序。

比较器

用于对对象进行比较,比较两对象位置

对于比较器实现对象比较有两种形式:

 

第一种:用要比较的类实现comparable接口,实现compareTo方法

书写在要比较的对象的类中,只能为当前类所创建的对象使用

实现compareTo方法,实现的是当前对象与另一个对象进行比较,返回1代表当前对象应在另一个对象后面,返回-1代表当前对象应在另一个对象前面,返回0代表两个对象相等不进行位置改变

可以直接使用Arrays工具类或者Collections工具类  sort方法直接对保存实现了comparable接口的对象数组或集合对象进行排序

 

第二种:创建单独比较器类,实现comparator接口 实现compare方法

单独创建比较器,设置比较规则,针对以相同比较规则的对象进行比较

实现compare方法方法,传入两个要比较的对象,返回1代表第一个对象应在另一个对象后面,返回-1代表第一个对象应在另一个对象前面,返回0代表两个对象相等不进行位置改变

在使用时需要使用Arrays工具类或者Collections工具类  sort方法额外传入自定义比较器对象

 

对于排序的方式不同,具体选择哪种方法实现对象的比较也会有所不同

 

两种方式使用情景

当只对某一个类的对象进行排序时使用第一种,当对某一多个类进行排序比较时使用第二种

泛型

Java中的泛型,是指向list中添加统一类型的数据时,不会出现类型转换无法确定的问题

Jdk1.5以后推出的,在类创建对象时,为创建的对象指定的数据类型进行修改。

集合一旦定义了泛型类型,就只能向里面添加指定类型的对象,取出时不需要强制转换。

泛型的定义与使用

泛型大多使用大写的单个字母进行定义。<>包裹,定义多个泛型时使用,分隔。

 

  • 书写在类名后
//1书写在类名后
//泛型在类中可以当做一个类来使用
//在创建对象时需要传入泛型
//这样对象中所有涉及到泛型的地方都会替换为指定类型
public class Genericity<A,B> {
	public void a(A e) { 
	}
	public void b(B e) { 
	}
}
  • 书写在方法中
	//2书写在方法中
	//创建对象时不需要填入泛型
	//一般在方法参数列表获取泛型的类型
	public<E> E c(E e) {
		//会自动识别传入数据的数据类型
		//将方法中泛型进行替换
		return e;
	}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值