一、常用的泛型類
1.ArrayList類
package try_a_package;
import java.util.ArrayList;
class ArrayListTest {
public static void main(String[] args)
{
ArrayList list1=new ArrayList();
list1.add("我是一個");
list1.add("憨憨");
list1.add(1);
boolean flag1=list1.contains("憨憨");
if(flag1)
System.out.println("我是憨憨");
else
System.out.println("我才不是憨憨呢!");
System.out.println(list1.get(0));
System.out.println(list1.size());
System.out.println(list1.set(0, "我是兩個"));
for(Object a:list1)
{
System.out.println(a);
}
// 這里像洗掉的元素,而不少索引,所以增加了Object的型別轉換來實作這個操作,
list1.remove((Object)1);
// 如果不加Object的話,會直接移除索引處的元素
// 如果索引處的元素,不存在,如下面這個洗掉Object后的情形
// 則會拋出越界的例外
list1.remove((Object)2);
for(int i=0;i<list1.size();++i)
{
Object o=list1.get(i);
System.out.println(o);
}
System.out.println(list1.isEmpty());
System.out.println(list1.indexOf("憨憨"));
list1.clear();
System.out.println(list1.isEmpty());
}
}
2.LinkedList類
package try_a_package;
import java.util.LinkedList;
public class LinkedListTest {
public static void main(String[] args) {
// 構造
LinkedList list = new LinkedList();
// 插入元素
list.add(4);
list.add("String");
list.add(1, 5);
list.addFirst(1);
list.addLast(8);
// 讀取指定元素
System.out.println(list.getFirst());
System.out.println(list.getLast());
System.out.println(list.get(2));
int temp = list.indexOf(5);
System.out.println(temp);
temp = list.lastIndexOf(5);
System.out.println(temp);
// 注意,要進行強制型別
temp = (int) list.peek();
System.out.println(temp);
// 移除元素
temp = (int) list.poll();
System.out.println(temp);
temp = (int) list.remove();
System.out.println(temp);
temp = (int) list.get(0);
System.out.println(temp);
String str = (String) list.get(1);
System.out.println(str);
str = (String) list.remove(1);
System.out.println(str);
boolean flag = list.remove((Object) 5);
System.out.println(flag);
flag = list.remove((Object) 5);
System.out.println(flag);
temp = (int) list.removeFirst();
System.out.println(temp);
if (!list.isEmpty())
temp = (int) list.removeLast();
System.out.println(temp);
}
}
3.Stack類
package try_a_package;
import java.util.Stack;
import java.util.Scanner;
public class StackTest {
public static void main(String[] args)
{
Stack stack=new Stack();
Scanner sc=new Scanner(System.in,"gbk");
stack.push(1);
stack.push(2);
stack.push(5);
while(!stack.isEmpty())
{
System.out.println(stack.pop());
}
sc.close();
}
}
4.HashSet類
package try_a_package;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Random;
public class HashSetTest {
// 輸出集合中的元素
public static void print(HashSet a)
{
System.out.print("{");
Iterator it=a.iterator();
int c=0;
while(it.hasNext())
{
int t=(int)it.next();
if(c==0)
{
System.out.print(t);
}
else
{
System.out.print(","+t);
}
c++;
}
System.out.println("}");
}
// 合并兩個集合
public static HashSet interSection(HashSet a,HashSet b)
{
HashSet c=new HashSet();
Iterator it=a.iterator();
while(it.hasNext())
{
int t=(int)it.next();
if(b.contains(t))
{
c.add(t);
}
}
return c;
}
// 求并集
public static HashSet unionSection(HashSet a,HashSet b)
{
HashSet c=new HashSet(a);
c.addAll(b);
return c;
}
// 隨機生成元素,構成集合
public static HashSet getSet(int num,int n)
{
HashSet h=new HashSet();
Random rd=new Random();
for(int i=0;i<n;++i)
{
int now_rd=rd.nextInt(num);
h.add(now_rd);
}
return h;
}
// 主函式
public static void main(String[] args)
{
HashSet a,b,c,d;
a=getSet(10,6);
b=getSet(10,6);
print(a);
print(b);
c=interSection(a,b);
d=unionSection(a,b);
print(c);
print(d);
}
}

5.TreeSet
package try_a_package;
import java.util.Collection;
import java.util.Iterator;
import java.util.Random;
import java.util.TreeSet;
public class TreeSetTest {
// 輸出集合中的所有元素(適用于List,Queue,Set)
public static void printSet(Collection a)
{
System.out.print("(");
Iterator it=a.iterator();
for(int i=0;it.hasNext();++i)
{
int t=(int)it.next();
if(i==0)
{
System.out.print(t);
}
else
{
System.out.print(","+t);
}
}
System.out.println("}");
}
// 輸出ENode構成的集合中的元素
public static void print(TreeSet<ENode> ts)
{
System.out.println("輸出集合中的元素:");
System.out.println("{");
Iterator it=ts.iterator();
while(it.hasNext())
{
ENode node=(ENode)it.next();
System.out.println(node);
}
System.out.println("}\n");
}
// 隨機產生由n個元素構成的集合
public static TreeSet getTreeSet(int num,int n)
{
TreeSet h=new TreeSet();
Random rd=new Random();
for(int i=0;i<n;++i)
{
int tmp=rd.nextInt(num);
h.add(tmp);
}
return h;
}
public static TreeSet<ENode> getDecare(TreeSet a,TreeSet b)
{
TreeSet<ENode> ts=new TreeSet<>();
Iterator ita;
ita=a.iterator();
while(ita.hasNext())
{
int tmpa=(int)ita.next();
Iterator itb=b.iterator();
while(itb.hasNext())
{
int tmpb=(int) itb.next();
ENode node=new ENode(tmpa,tmpb);
ts.add(node);
}
}
return ts;
}
// 主函式
public static void main(String[] args)
{
TreeSet a,b;
a=getTreeSet(10,3);
b=getTreeSet(10,2);
printSet(a);
printSet(b);
TreeSet<ENode> c=getDecare(a,b);
print(c);
}
}

6.HashMap
Vote
package try_a_package;
public class Vote {
private String voterNames;
private int count;
@Override
public String toString()
{
return "得票數量:"+count+"\n投票人串列:"+voterNames;
}
public Vote()
{
voterNames="";
count=0;
}
public String getVoterNames()
{
return voterNames;
}
public int getCount()
{
return count;
}
public void increase(String voterName)
{
this.voterNames=this.voterNames+","+voterName;
this.count++;
}
}
HashMapTest
package try_a_package;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Random;
public class HashMapTest {
public static void main(String[] args)
{
// 初始化HashMap
HashMap<String,Vote> pollsMap=new HashMap<>();
// 初始化候選人陣列
String condidateNames[]= {"張三","李四","王昭光"};
Vote vote;
// 初始化投票情況?
for(int i=0;i<condidateNames.length;++i)
{
vote=new Vote();
pollsMap.put(condidateNames[i], vote);
}
int number;
String voter[];
Scanner sc=new Scanner(System.in,"gbk");
System.out.println("輸入投票人數:");
number=sc.nextInt();
sc.close();
voter=new String[number];
for(int i=0;i<number;++i)
{
voter[i]="v"+(i+1);
}
Random rd=new Random();
for(int i=0;i<number;++i)
{
int select=rd.nextInt(condidateNames.length);
Vote value=pollsMap.get(condidateNames[select]);
value.increase(voter[i]);
pollsMap.put(condidateNames[select], value);
}
// 結果顯示
for(int i=0;i<condidateNames.length;++i)
{
System.out.println("候選人:"+condidateNames[i]+":");
Vote value=pollsMap.get(condidateNames[i]);
System.out.println(value);
}
}
}
運行結果

二、與反射相關的類
1. Modifier類
// 基本類
// (1)修飾符Modifier類
//依據修飾符代碼值得到修飾符串
public static String getModifierStr(int mod)
{
String msg="";
if(Modifier.isPublic(mod))
{
msg+=" public";
}
if(Modifier.isPrivate(mod))
{
msg+=" private";
}
if(Modifier.isStatic(mod))
{
msg+=" static";
}
if(Modifier.isSynchronized(mod))
{
msg+=" synchronized";
}
if(Modifier.isStrict(mod))
{
msg+=" strict";
}
if(Modifier.isAbstract(mod))
{
msg+=" abstract";
}
if(Modifier.isTransient(mod))
{
msg+=" transient";
}
if(Modifier.isVolatile(mod))
{
msg+=" volatile";
}
if(Modifier.isFinal(mod))
{
msg +=" final";
}
return msg;
}
2. Field類
// (2)Field類
// 輸出一個成員屬性
public static void outputField(Field fs)
{
String msg;
int modifiers =fs.getModifiers();
// 屬性修飾符
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
// 屬性的資料型別
Type tp=fs.getType();
// 屬性的名稱
System.out.println(tp+" "+fs.getName()+";");
}
3. constructor類
// (3)Constructor類
// 輸出一個構造方法
public static void outputConstructor(Constructor constructor)
{
String msg;
int modifiers=constructor.getModifiers();
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
System.out.print(constructor.getName()+"(");
Type tps[]=constructor.getParameterTypes();
for(int i=0;i<tps.length;++i)
{
if(i!=0)
{
System.out.print(",");
}
System.out.print(tps[i]+" "+(char)('a'+i));
}
System.out.println(");");
}
4. Method類
// (4)Method類
// 輸出一個方法
public static void outputMethod(Method ms)
{
String msg;
int modifiers=ms.getModifiers();
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
System.out.print(ms.getReturnType().getCanonicalName()+" ");
System.out.print(ms.getName()+"(");
Type tps[]=ms.getGenericParameterTypes();
for(int i=0;i<tps.length;++i)
{
if(i!=0)
{
System.out.print(",");
}
System.out.print(tps[i]+" "+(char)('a'+i));
}
System.out.print(");");
}
5. Class類
// (5)Class類
// 5.1 輸出類或介面定義的部分資訊
public static void outputMsgOfClass(Class c)
{
String msg="";
// 得到修飾符的編碼值
int modifiers=c.getModifiers();
msg=getModifierStr(modifiers);
if(c.isInterface())
{
msg+=" interface";
}
else if(c.isEnum())
{
msg+=" enum";
}
else
{
msg+=" class";
}
System.out.print(msg);
// 得到父類資訊
Class parent=c.getSuperclass();
Object ob=new Object();
Class obc=ob.getClass();
if(parent!=null && parent.getCanonicalName().compareTo(obc.getName())!=0)
{
System.out.print("extends" + parent.getCanonicalName());
}
// 得到介面陣列
Class[] interfaces=c.getInterfaces();
for(int i=0;i<interfaces.length;++i)
{
if(i==0)
{
System.out.print(" implements "+interfaces[i].getName());
}
else
{
System.out.print(" "+interfaces[i].getName());
}
}
System.out.println("{");
}
// 5.2 輸出類中的所有屬性
public static void outputFields(Class c)
{
Field fs[];
fs=c.getDeclaredFields();
for(int i=0;i<fs.length;++i)
{
outputField(fs[i]);
}
}
// 5.3 輸出類中的所有構造方法
public static void outputConstructors(Class c)
{
Constructor constructors[];
constructors=c.getDeclaredConstructors();
for(Constructor constructor:constructors)
{
outputConstructor(constructor);
}
}
// 5.4 輸出類中宣告的所有方法
public static void outputMethods(Class c)
{
Method ms[];
ms=c.getDeclaredMethods();
for(int i=0;i<ms.length;++i)
{
outputMethod(ms[i]);
}
}
// 5.5 輸出類的所有資訊,包括超類的資訊
public static void outputAllInformationOfClass(Class c) throws Exception
{
Class parent=c.getSuperclass();
Object ob=new Object();
Class obc=ob.getClass();
if(parent!=null && parent.getName().compareTo(obc.getName())!=0)
{
outputAllInformationOfClass(parent);
}
String msg;
if(c.isInterface())
{
msg="介面";
}
else if(c.isEnum())
{
msg="列舉";
}
else
{
msg="類";
}
System.out.println("反射"+c.getCanonicalName()+msg);
System.out.println("-----------------------------");
outputMsgOfClass(c);
outputFields(c);
outputConstructors(c);
outputMethods(c);
System.out.println("}");
//outputInterfaces(c);
}
6. 測驗類(隨便選擇,無需看)
package try_a_package;
public class Triangle1 {
private double a,b,c;
String name="三角形";
public Triangle1()
{
this(10);
}
public Triangle1(double x)
{
this(x,x,x);
}
public Triangle1(double x,double y)
{
this(x,x,y);
}
public Triangle1(double a,double b,double c)
{
this.a=a;
this.b=b;
this.c=c;
adjustName();
}
public void adjustName()
{
if(this.isTriangle())
{
double t;
if(a>b)
{
t=a;
a=b;
b=t;
}
if(a>c)
{
t=a;
a=c;
c=t;
}
if(b>c)
{
t=b;
b=c;
c=t;
}
name="三角形";
if(c*c==a*a+b*b)
{
name="直角"+name;
}
else if(a==b&&b==c)
{
name="等邊"+name;
}
else if(a==b||b==c)
{
name="等腰"+name;
}
}
else
{
name="非三角形";
}
}
public boolean isTriangle()
{
if(a+b>c && a+c>b && b+c>a)
{
return true;
}
return false;
}
public double getPerimeter()
{
return a+b+c;
}
public double getArea()
{
double p,s;
p=(a+b+c)/2;
s=Math.sqrt(p*(p-a)*(p-b)*(p-c));
return s;
}
@Override
public String toString()
{
String msg=name+"\t"+a+"\t"+b+"\t"+c;
if(isTriangle())
{
msg=msg+"\t"+this.getPerimeter()+"\t"+this.getArea();
}
return msg;
}
public static void printHeader()
{
System.out.println("圖形名稱\t\t邊長a\t邊長b\t邊長c\t周長\t面積");
}
}
7. 完整測驗程式(可以執行)
package try_a_package;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.lang.reflect.Type;
public class Reflect {
// 基本類
// (1)修飾符Modifier類
//依據修飾符代碼值得到修飾符串
public static String getModifierStr(int mod)
{
String msg="";
if(Modifier.isPublic(mod))
{
msg+=" public";
}
if(Modifier.isPrivate(mod))
{
msg+=" private";
}
if(Modifier.isStatic(mod))
{
msg+=" static";
}
if(Modifier.isSynchronized(mod))
{
msg+=" synchronized";
}
if(Modifier.isStrict(mod))
{
msg+=" strict";
}
if(Modifier.isAbstract(mod))
{
msg+=" abstract";
}
if(Modifier.isTransient(mod))
{
msg+=" transient";
}
if(Modifier.isVolatile(mod))
{
msg+=" volatile";
}
if(Modifier.isFinal(mod))
{
msg +=" final";
}
return msg;
}
// (2)Field類
// 輸出一個成員屬性
public static void outputField(Field fs)
{
String msg;
int modifiers =fs.getModifiers();
// 屬性修飾符
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
// 屬性的資料型別
Type tp=fs.getType();
// 屬性的名稱
System.out.println(tp+" "+fs.getName()+";");
}
// (3)Constructor類
// 輸出一個構造方法
public static void outputConstructor(Constructor constructor)
{
String msg;
int modifiers=constructor.getModifiers();
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
System.out.print(constructor.getName()+"(");
Type tps[]=constructor.getParameterTypes();
for(int i=0;i<tps.length;++i)
{
if(i!=0)
{
System.out.print(",");
}
System.out.print(tps[i]+" "+(char)('a'+i));
}
System.out.println(");");
}
// (4)Method類
// 輸出一個方法
public static void outputMethod(Method ms)
{
String msg;
int modifiers=ms.getModifiers();
msg=getModifierStr(modifiers);
System.out.print(msg+" ");
System.out.print(ms.getReturnType().getCanonicalName()+" ");
System.out.print(ms.getName()+"(");
Type tps[]=ms.getGenericParameterTypes();
for(int i=0;i<tps.length;++i)
{
if(i!=0)
{
System.out.print(",");
}
System.out.print(tps[i]+" "+(char)('a'+i));
}
System.out.print(");");
}
// (5)Class類
// 5.1 輸出類或介面定義的部分資訊
public static void outputMsgOfClass(Class c)
{
String msg="";
// 得到修飾符的編碼值
int modifiers=c.getModifiers();
msg=getModifierStr(modifiers);
if(c.isInterface())
{
msg+=" interface";
}
else if(c.isEnum())
{
msg+=" enum";
}
else
{
msg+=" class";
}
System.out.print(msg);
// 得到父類資訊
Class parent=c.getSuperclass();
Object ob=new Object();
Class obc=ob.getClass();
if(parent!=null && parent.getCanonicalName().compareTo(obc.getName())!=0)
{
System.out.print("extends" + parent.getCanonicalName());
}
// 得到介面陣列
Class[] interfaces=c.getInterfaces();
for(int i=0;i<interfaces.length;++i)
{
if(i==0)
{
System.out.print(" implements "+interfaces[i].getName());
}
else
{
System.out.print(" "+interfaces[i].getName());
}
}
System.out.println("{");
}
// 5.2 輸出類中的所有屬性
public static void outputFields(Class c)
{
Field fs[];
fs=c.getDeclaredFields();
for(int i=0;i<fs.length;++i)
{
outputField(fs[i]);
}
}
// 5.3 輸出類中的所有構造方法
public static void outputConstructors(Class c)
{
Constructor constructors[];
constructors=c.getDeclaredConstructors();
for(Constructor constructor:constructors)
{
outputConstructor(constructor);
}
}
// 5.4 輸出類中宣告的所有方法
public static void outputMethods(Class c)
{
Method ms[];
ms=c.getDeclaredMethods();
for(int i=0;i<ms.length;++i)
{
outputMethod(ms[i]);
}
}
// 5.5 輸出類的所有資訊,包括超類的資訊
public static void outputAllInformationOfClass(Class c) throws Exception
{
Class parent=c.getSuperclass();
Object ob=new Object();
Class obc=ob.getClass();
if(parent!=null && parent.getName().compareTo(obc.getName())!=0)
{
outputAllInformationOfClass(parent);
}
String msg;
if(c.isInterface())
{
msg="介面";
}
else if(c.isEnum())
{
msg="列舉";
}
else
{
msg="類";
}
System.out.println("反射"+c.getCanonicalName()+msg);
System.out.println("-----------------------------");
outputMsgOfClass(c);
outputFields(c);
outputConstructors(c);
outputMethods(c);
System.out.println("}");
//outputInterfaces(c);
}
// 主程式
public static void main(String[] args) throws Exception
{
Class c=null;
c=Class.forName("try_a_package.Triangle1");
outputAllInformationOfClass(c);
Triangle1 t=null;
c=Class.forName("try_a_package.Triangle1");
System.out.println("創建Triangle1類的默認實體");
t=(Triangle1)c.newInstance();
t.adjustName();
t.printHeader();
}
}
8.運行結果

反射try_a_package.Triangle1類
-----------------------------
public class{
private double a;
private double b;
private double c;
class java.lang.String name;
public try_a_package.Triangle1(double a,double b,double c);
public try_a_package.Triangle1(double a,double b);
public try_a_package.Triangle1(double a);
public try_a_package.Triangle1();
public java.lang.String toString(); public static void printHeader(); public void adjustName(); public boolean isTriangle(); public double getPerimeter(); public double getArea();}
創建Triangle1類的默認實體
圖形名稱 邊長a 邊長b 邊長c 周長 面積
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/160249.html
標籤:其他
