关键词:
一.泛型
/*
*文件名: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;
泛型和泛型集合
泛型:通过参数化类型来实现在同一份代码上操作多种数据类型。利用“参数化类型”将类型抽象化,从而实现灵活的复用。usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebCon... 查看详情
c#中的泛型和泛型集合
泛型泛型引入了一个概念:类型参数。通过使用类型参数(T)减少了运行时强制转换或装箱操作的风险,通过泛型可以最大限度的重用代码,保护类型的安全及提高性能,他的最常见应用就是创建集合类,可以约束集合类中的元... 查看详情
02.list泛型集合
List泛型可以转换成数组List泛型和数组的相同点:List泛型的数据类型必须是指定的,数组的数据类型也必须是指定的.List泛型和数组的不同点:List泛型的长度是随意的,而数组的长度必须是在声明时就指定.因为List泛型集合的类型是唯... 查看详情
泛型和枚举
泛型: jdk1.5版本之后出现的新特性,用于解决安全问题,是一个安全机制. 泛型格式;通过<>定义操作的引用数据类型,在java提供的对象时,什么时候写泛型呢? ... 查看详情
七数组和集合(一维数组和二维数组的声明以及使用,arraylist类,hashtable,list,directory字典等常用集合(泛型和非泛型))
数组数组就是一个集合,同一数据类型的一组值,是数量固定的相同类型元素的组合。数组属于引用类型数组的索引从0开始,就是说如果你想访问一个数组元素,你就得通过,相应元素的整数索引号访问。定义一维数组:数组... 查看详情
泛型和容器(代码片段)
一.不使用泛型的容器在JavaSE5之前,Java中是没有泛型这一概念的,那么容器没有泛型怎么使用呢?代码如下:ArrayListapples=newArrayList();//没有使用泛型apples.add(newApple());//集合可以添加Apple对象apples.add(newCar());//也可以添加Car对象在... 查看详情
java基础语法java的泛型和包装类(代码片段)
...章主要是为了后面学习集合框架所做的知识补充。补充了泛型以及包装类两个知识,但是该章泛型的讲解不够全面,主要是为了集合框架学习做铺垫。文章目录1.预备知识-泛型(Generic)1.1泛型的引入1.2泛型的分类... 查看详情
作业09-集合与泛型
作业09-集合与泛型1.本周学习总结1.1以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。2.书面作业1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列举至少2种在List中删除元素的方法。总结:remvoe方法的... 查看详情
201621044079韩烨作业09-集合与泛型
作业09-集合与泛型1.本周学习总结1.1以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。1.2选做:收集你认为有用的代码片段2.书面作业本次作业题集集合1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列... 查看详情
java泛型和内部类(代码片段)
文章目录一、泛型的概述1.概念2.泛型的定义3.泛型的使用4.泛型的意义5.泛型是如何编译的?二、泛型的进一步使用1.泛型类的定义-类型边界Number类2.泛型方法3.泛型中的父子类型4.通配符?通配符上界通配符下界5.泛型的... 查看详情
作业09-集合与泛型
...思维导图或其他)归纳总结集合与泛型相关内容。2.书面作业本次作业题集集合1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列举至少2种在List中删除元素的方法。实验总结:sc.next()实现元素以空格为分隔符,add()方法放... 查看详情
作业09-集合与泛型
...思维导图或其他)归纳总结集合与泛型相关内容。2.书面作业本次作业题集集合1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列举至少2种在List中删除元素的方法。2.统计文字中的单词数量并按出现次数排序(题集题目)2.... 查看详情
作业09-集合与泛型
...思维导图或其他)归纳总结集合与泛型相关内容。2.书面作业本次作业题集集合1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列举至少2种在List中删除元素的方法。(1)在用for循环add进去元素之后,接下来的remove操作中,... 查看详情
作业09-集合与泛型
...思维导图或其他)归纳总结集合与泛型相关内容。2.书面作业1.List中指定元素的删除(题集题目)1.1实验总结。并回答:列举至少2种在List中删除元素的方法。总结:本题要求编写两个函数convertStringToList(Stringline)和remove(List在List删... 查看详情
作业09-集合与泛型
1.本周学习总结1.1以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。1.2选做:收集你认为有用的代码片段while(true){Stringstr=sc.nextLine();String[]str1=str.split("");if(str1[0]==null)System.out.println("found0results");else{if(map.containsKey... 查看详情
java里的泛型和通配符
...来,取出A,B单独的对象希望我的回答你满意。参考技术A泛型可以用"<T>"代表,任意类型的。解释:“<T>”是泛型的默认值,可以被任意类型所代替,如:List<String>list=newArayList<String>();这个就定义了一个... 查看详情
java泛型和通配符那点事
泛型(Generictype或者generics)是对Java语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类。可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符... 查看详情
java泛型和通配符(代码片段)
java泛型/通配符泛型E-Element(在集合中使用,因为集合中存放的是元素)T-Type(表示Java类,包括基本的类和我们自定义的类)K-Key(表示键,比如Map中的key)V-Value(表示值)N-Number(表示数值类型)?-(表示不确定的java类型)为什... 查看详情