培训作业:泛型和集合
来源:互联网 发布:单例模式 java 双重锁 编辑:程序博客网 时间:2024/05/17 01:54
一.泛型
/* *文件名:User.java */package IOTest;import java.io.*;public class User{ String userName; String password; public User(String userName,String password) { this.userName=userName; this.password=password; } public User(){} @Override public String toString() { return "[用户名:"+this.userName+"----密码:"+this.password+"]"; }}
/* *文件名:Pair.java */package IOTest;public class Pair<T> { T first; T second; public Pair(T first,T second) { this.first=first; this.second=second; }}
/* 泛型应用的注意事项 *文件名:UserTest.java */package IOTest;import javax.jws.Oneway;public class UserTest{ public static void main(String[] args) throws ClassNotFoundException, Exception, IllegalAccessException { User aUser=new User("Alice", "1234"); User bUser=new User("Bob", "12345"); Pair<String> aPair=new Pair<>("12", "one"); Pair<User> bPair=new Pair<>(aUser,bUser); /* * 反射:下面方法会产生一个Class类型的一个实例 * 注:jvm会为每一个类管理一个Class类对象 */ System.out.println("比较普通类++++"); System.out.println("对象.getclass()----"+aUser.getClass()); System.out.println("类名.class----"+User.class); Class class1 =Class.forName("IOTest.User"); System.out.println("Class.forName()----"+class1); System.out.println("比较泛型类+++++"); System.out.println("对象.getclass()----"+aPair.getClass()); System.out.println("对象.getclass()----"+bPair.getClass()); System.out.println("类名.class----"+Pair.class); /* * 泛型类的类型查询只适用于原始类型. * 如下测试 bPair是Pair<>泛型类的一个实例吗是错误的 * System.out.println(aPair instanceof Pair<T>); //Error */ System.out.println("aUser 是User类的一个实例吗? "+(aUser instanceof User)); /* * Class类本身就是泛型 * 对于普通类使用Class类的newInstance方法 * 这个newInstance方法调用无参的构造函数创建对象。 * 但泛型类pair<T>擦除类型变量<T>后变成Object后,表达式中不能用new T(..)或者T.class表述 */ User cUser=(User)class1.newInstance(); System.out.println("普通类----"+cUser); /* 泛型类不能创建参数化类型的数组 * Pair<User>[] tablePairs= new Pair<String>[10];//Error * 但可以声明通配类型的数组,然后进行类型转换,如下 */ Pair<User>[] tablePairs=(Pair<User>[]) new Pair<?>[10]; tablePairs[0]=bPair; System.out.println(bPair.first); }}
二.集合
//------------------------Person.javapackage LogInAndOut;public class Person { int ID; String Password; public Person(int aID,String aPassword) { ID=aID; Password=aPassword; } public String toString() { // TODO Auto-generated method stub return "[用户 ID: "+ID+" 密码 "+Password+"]"; } @Override public boolean equals(Object arg0) { // TODO Auto-generated method stub Person p=(Person)arg0; return ID==p.ID&&Password.equals(p.Password); }}
//----------------------Log.javapackage LogInAndOut;import java.util.*;public class Log{ public static void main(String[] args) { Collection Store=new ArrayList(); Store.add(new Person(111,"PassWord1")); Store.add(new Person(123,"PassWord2")); Store.add(new Person(1234,"PassWord3")); Scanner input=new Scanner(System.in); System.out.println("请选择:A: 注册.... B: 登录.... "); String s=input.next().toUpperCase(); if(s.equals("A")) //注册 { System.out.println("------------开始注册-----------"); System.out.print("请输入你的id:"); int id=input.nextInt(); if(!Judge(Store,id)) { System.out.println("该ID早已存在,请重新输入!"); return ; } System.out.print("请输入你的密码:"); String password=input.next().toString(); Person a=new Person(id,password); System.out.println("注册成功!现在可以登录."); Object[] obj=Store.toArray(); for(Object o:obj) System.out.println("之前存储的信息为:"+(Person)o); } else if(s.equals("B")) //登录 { System.out.println("------------开始登录-----------"); System.out.print("请输入你的id:"); int id=input.nextInt(); System.out.print("请输入你的密码:"); String password=input.next().toString(); Person a=new Person(id,password); if(Store.contains(a)) System.out.print("登录成功!"); else System.out.println("输入信息不存在,请重新输入!"); } else { System.out.println("选择有误,请重新输入!"); return; } } /* 一下两种方法均可 */ //方法一 public static boolean Judge(Collection c,int p) { Object[] obj=c.toArray(); for(int i=0;i<obj.length;i++) { Person per=(Person)obj[i]; if(p==per.ID) return false; } return true; } //方法二 public static boolean Judge(Collection c,int p) { Iterator it=c.iterator(); while(it.hasNext()) { Person per=(Person)it.next(); if(p==per.ID) return false; } return true; }}
阅读全文
0 0
- 培训作业:泛型和集合
- 黑马程序员Java培训和Android培训:集合(Map)
- 【安博培训笔记】Oracle7 子程序和程序包 作业20130914
- 集合 作业
- 【收集贴】Tuxedo管理和开发系列培训视频集合
- 集合和泛型
- 集合和泛型
- 集合和泛型
- 集合和泛型
- 集合和泛型
- 集合和泛型
- 集合和泛型2-----集合1
- 泛型集合和非泛型集合
- 作业:山姆公司培训方案
- 【安博培训笔记】Oracle4 事务和数据库对象 作业20130910
- 集合框架和泛型
- e.集合和泛型
- Java集合和泛型
- 选择器的优先级问题
- 一个自定义的折线图
- AppStore搜索框内容设置以及点击Search
- 如何选择机器学习的算法
- Leetcode-Minimum Window Substrings(unordered_map)
- 培训作业:泛型和集合
- HNOI-2015 菜肴制作
- 递归函数
- python绘制神经网络中的ReLU激活函数图像(附代码)
- 1049. Counting Ones (30)
- 学PPT时的作品
- Centos 7上安装WordPress
- JAVA垃圾回收机制
- Java遍历一个类的所有属性和值