培训作业:泛型和集合
Posted Vanau
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了培训作业:泛型和集合相关的知识,希望对你有一定的参考价值。
一.泛型
/*
*文件名: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.java
package 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.java
package 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;
以上是关于培训作业:泛型和集合的主要内容,如果未能解决你的问题,请参考以下文章
七数组和集合(一维数组和二维数组的声明以及使用,ArrayList类,HashTable,List,Directory字典等常用集合(泛型和非泛型))