2.Java高级编程集合框架和泛型(二)

Java高级编程集合框架和泛型(二)

一、Map的使用

以键值对形式进行储存数据

key不能重复

Map常用方法
方法名说明
Object put(Object key, Object val)以“键-值”对的方式进行存储
Object get(Object key)根据键返回相关联的值,如果不存在指定的键,返回null
Object remove(Object key)删除由指定的键映射的“键-值对”
int size()返回元素个数
Set keySet()返回键的集合
Collection values()返回值的集合
boolean containsKey(Object key)如果存在由指定的键映射的“键-值对”,返回true
	/*
		 * key-value
		 * key唯一
		 * value 不唯一 
		 */
		Map map = new HashMap();
		map.put(1001, "张三");
		map.put(1002, "李四");
		map.put(1003, "王五");
		
		//keySet返回键集合
		Set keysets = map.keySet();
		for(Object obj:keysets) {
			System.out.println("key=="+obj);
			System.out.println("value=="+map.get(obj));
		}
		
		//Collection values()返回值的集合
		System.out.println("*****values*****");
		Collection list = map.values();
		for(Object obj:list) {
			System.out.println("value=="+obj);//但只能value
		}
		//boolean containsKey(Object key)如果存在由指定的键映射的“键-值对”,返回true
		boolean bool = map.containsKey(1003);
		System.out.println("boolean=="+bool);		
		
		//根据键返回相关联的值,
		System.out.println(map.get(1001));	
		
		System.out.println(map.size());
		
		map.remove(1003);//删除
		System.out.println(map.size());
		//如果不存在指定的键,返回null
		System.out.println(map.get(1003));
		
		

二、遍历方法

package com.hz.ch01;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

public class Text03 {

	public static void main(String[] args) {
		Map map = new HashMap();
		//赋值
		map.put("cn", "中国");
		map.put("us", "中国1");
		map.put("ru", "中国2");
		
		//键值对
		System.out.println(map.get("cn"));
		
		//增强循环
		for(Object key:map.keySet()) {
			System.out.println(key+"==="+map.get(key));
		}
		
		
		
		//迭代器
		System.out.println("=========================");
		Set keys = map.keySet();
		Iterator it = keys.iterator();
		while(it.hasNext()) {
			Object k = it.next();
			System.out.println(k+"==="+map.get(k));
		}
	}

}

三、泛型的定义

泛型接口: 先创建一个接口,在+<>,创建

泛型类:

泛型方法:

pubkic <k> String get(k a){
    return "";
}

<? entends T>:必须是T类或是子类,限制add功能,但是可以赋值list

<? super T>:必须是T的父类或是当前类,限制get功能,get调用返回Object

四、泛型集合的使用

泛行:以数据类型作为参数传递

传递数据类型必须是引用数据类型:

	int == Integer
    char == Character
    //定义泛型list
    List<Integer> list = new  ArrayList<Integer>();

    //定义泛型set
    Set<Long> set = new HashSet<long>();

    //定义泛行map
    Map<Sting,Integer> map = new HashMap<Sting,Integer>();

五、Collections算法类

(1)Collections类常用方法

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class Text04 {

	public static void main(String[] args) {
		List<Integer> list = new ArrayList<Integer>();
		list.add(99);
		list.add(77);
		list.add(88);
		list.add(44);
		list.add(55);
		list.add(66);
		
		//获得最大数
		int max = Collections.max(list);
		
		//获得最小数
		int min = Collections.min(list);
		
		System.out.println("最大数"+max);
		System.out.println("最小数"+min);
		
		System.out.println(Arrays.toString(list.toArray()));
		
		//升序排序
		Collections.sort(list);
		System.out.println(Arrays.toString(list.toArray()));
		
		//查询指定内容是否存在  返回下标	小于0不存在
		int i = Collections.binarySearch(list, 44);
		System.out.println(i);
		
		//降序排序
		Collections.reverse(list);
		System.out.println(Arrays.toString(list.toArray()));
	}

}

(2)对象排序

​ 让当前对象实现接口Comparable

​ 重写方法compareTo(Object obj)

ackage com.hz.ch01;

public class Student implements Comparable<Student>{
	public String name;
	public int age;
	
	public Student(String name, int age) {
		
		this.name = name;
		this.age = age;
	}

	@Override
	public int compareTo(Student o) {
		if(this.age==o.age) {
				return 0;//不交换
		}else if(this.age>o.age) {
			return 1;//交换位置
		}else {
			return -1;//不交换
		}
	
	}

}

.name = name;
this.age = age;
}

@Override
public int compareTo(Student o) {
	if(this.age==o.age) {
			return 0;//不交换
	}else if(this.age>o.age) {
		return 1;//交换位置
	}else {
		return -1;//不交换
	}

}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

懒洋洋大魔王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值