泛型集合和枚举

发布于:2023-01-20 ⋅ 阅读:(479) ⋅ 点赞:(0)

泛型集合:

泛型集合可以约束集合内的元素类型

典型泛型集合ArrayList<E>,HashMap<K,V>

<E><K,V>表示泛型集合类中的元素类型

泛型集合中数据不在转换Object

ArrayList<Newstitle> al =new ArrayList<Newstitle>();

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

例题:学员应聘至外企工作,每个学员都会有一个英文名称,对应该学员对象。请实现通过英文名称,获得该学员对象的详细信息学员属性包括姓名以及性别通过泛型解决该问题

public static void main(String[] args) {
		//准备容器
		HashMap<String, Student> hm = new HashMap<String, Student>();
		//准备数据
		Student stu1 = new Student("张三", "男");
		Student stu2 = new Student("王三", "女");
		Student stu3 = new Student("佩罗西", "男");
		//存入集合
		hm.put("jack", stu1);
		hm.put("rose", stu2);
		hm.put("dog", stu3);
		//方法一:先利用HashMap对象hm用keySet()方法获取键值对的键,然后增强for循环在按照键的对应类型强制转换,再用get();方法获取键值对的值,再按照值的类型进行强制转换
		Set<String> keys =hm.keySet();
		for (String key  : keys) {
			Student stu= hm.get(key);
			System.out.println(key+"对应的学员姓名是:"+stu.getName()+"性别是:"+stu.getGender());
		}
		System.out.println("---------------------------");
		//方法二:先利用HashMap对象hm用keySet()方法获取键值对的键,然后取出键的Set的类调用iterator来进行取出键,再利用hasNext()方法进行判断
		//按照键的对应类型强制转换,再用get();方法获取键值对的值,再按照值的类型进行强制转换
		Set<String> keys1= hm.keySet();
		Iterator<String> it= keys1.iterator();
		while(it.hasNext()){
			String key1= it.next();
			
			Student val = hm.get(key1);
			
			System.out.println(key1+"对应的学员姓名是:"+val.getName()+"性别是:"+val.getGender());
		}
		
		System.out.println("**************************************");
		/*
		 * 方法三:利用entrySet()方法获取整体键值对,然后利用增强for循环,取出来的值原本是Map.Entry类型的 所以要强制转换,调用getKey()方法获取键然后看什么类型的进行强制转换
		 * 调用getValue()方法获取键然后看什么类型的进行强制转换
		 */
		 Set<Map.Entry<String, Student>> keysVal= hm.entrySet();
		 for (Map.Entry<String, Student> md  : keysVal) {
			 String key= md.getKey();
		
			 Student stu=md.getValue();
			
			System.out.println(key+"对应的学员姓名是:"+stu.getName()+"性别是:"+stu.getGender());
		}
		 System.out.println("**************************************");

	}

Collections算数类

Java集合框架将针对不同数据结构算法的实现都保存在工具类中

collections类定义了一系列用于操作集合的静态方法

Collrctions类常用的方法

Collections和Collection不同,前者时集合的操作类,后者时集合的接口

collections提供的常用静态方法:

srot();排序

Collections.sort(al);

binarySearch():查找:查找之前需要进行升序排序

System.out.println("查询后的下标"+Collections.binarySearch(al, "abc"));

max()/min():查找最大值\最小值

System.out.println("最大值:"+Collections.max(al)+"最小值:"+Collections.min(al));

实现一个类的对象之间比较大小,该类要实现Comparable接口并重写compareTo()方法

public class Students implements Comparable<Students>

@Override public int compareTo(Students students) { if(this.getAge()==students.getAge()){ return 0; }else if(this.getAge()>students.getAge()){ return 1; }else{ return -1; } }

实力类(一):

枚举:

关键字enum

例题:为大数据岗位课程三个学习阶段定义枚举:L1、L2、L3,分别表示第一、二、三阶段编程输出每个单元的学习目标L1:大数据开发工程师L2:大数据挖掘工程师L3:大数据架构师

//创建枚举的类,然后定义枚举
public enum Stage {
    大数据开发工程师,大数据挖掘工程师,大数据架构师;
}
public class Student {
    //定义属性,属性类型时枚举类型
    public Stage L1;
    public Stage L2;
    public Stage L3;
    public static void main(String[] args) {
        //创建对象并赋值输出;
        Student stu = new Student();
        stu.L1=Stage.大数据开发工程师;//用枚举类型.选择数据
        stu.L2=Stage.大数据挖掘工程师;
        stu.L3=Stage.大数据架构师;
        System.out.println("第一阶段:"+stu.L1+"\n第二阶段:"+stu.L2+"\n第三阶段:"+stu.L3);
    }
}
​

常见的java API

java.lang:Enum,包装类,Math,String,StringBuffer,System.....

java.util

java.io

java.sql

.........

包装类:

包装类把基本数据类型转化为对象:每个基本类型在java.lang中都有一个相应的包装类

包装类的作用:提供了一系列实用的方法,集合不允许存放基本上数据类型,存放数字时,要使用包装类型

包装类的构造方法:

1.所有包装类都可将与之对应的基本数据类型作为参数,来构造它们的实例

public Type (type value)

如:

        byte num1 = 10;
        Byte byte1 = new Byte(num1);
        short num2 = 1000;
        Short short1 = new Short(num2);
        long num3=100000;
        Long long1 = new Long(num3);
        int num4=10000;
        Integer integer1 = new Integer(num4);   
        float num5 =2.04f;
        Float float1= new Float(num5);
        double num6=22.5;
        Double double1 = new Double(num6);
        boolean num7 = true;
        Boolean boolean1 = new Boolean(num7);
        char num8 = 'b';
        Character char1 = new Character(num8);

2.除了Character类之外其他包装类可将一个字符串作为参数构造他们的实例,Number类型包装使用字符串作为参数构造实例的时候,字符串需要能够转换为数字的字符串否则就会报NumberFormatException(数字格式化异常)

String str1 = "13";//字符串13 Byte byte2 =new Byte(str1); System.out.println(byte2);//数字13

//布尔类型的包装创建对象时,传递的字符串除了字符串为true(不区分大小写)之外的,其他字符串内容,得到的结果都为false Boolean boolean2 = new Boolean("qhh"); System.out.println(boolean2);//false