第5章 Java集合类
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.7 ArrayList
import java.util.ArrayList; public class testArraylist { public static void main(String[] args) { ArrayList<Integer> theArray = new ArrayList<Integer>(); for (int i=0;i<10;i++) { Integer newInteger = new Integer(i); theArray.add(newInteger); } for (int k=0;k<theArray.size();k++) System.out.println(theArray.get(k)); } }
0 1 2 33 3 4 5 6 7 8 9
[0, 1, 2, 33, 3, 4, 5, 6, 7, 8, 9]
Vector可以自动维护索引。
Vector应用举例:找出下列程序的 错误
import java.util.Vector; public class Test { public static void main(String[] args) { Vector theVector = new Vector(); for (int i=0;i<10;i++) { point val = new point(i,i*i); theVector .addElement(val); } for (int k=0;k<theVector.size();k++){ System.out.println(theVector.elementAt(k).y);} class point { int x,y;public point(int i,int j){x=i;y=j;} }
import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<ArrayList<Integer>> vArr = new ArrayList<ArrayList<Integer>>(); ArrayList<Integer> strV3 = new ArrayList<Integer>(); strV3.add(1);strV3.add(2); strV3.add(3);strV3.add(4);strV3.add(5); ArrayList<Integer> strV4 = new ArrayList<Integer>(); strV4.add(6);strV4.add(7); strV4.add(8);strV4.add(9); vArr.add(strV3);vArr.add(strV4); for(ArrayList<Integer> arr : vArr) { for(Integer s:arr) System.out.println(s); } } }
Vector a = new Vector(); for(int i=1; i<=10; i++) { a.add("第" + i + "个孩子"); } for(;;) { if(a.size()==1) break; for(int k=0; k<2; k++) { a.add(a.remove(0)); a.add(a.elementAt(0)); a.remove(0); } a.remove(0); } System.out.println(a);
0 1 4 9 16 25 36 49 64 81
思考:
应改成: System.out.println(((point)theVector.elem entAt(k)).y); 能否使用这个集合类的时候不去这样繁 琐地进行类型转换呢?
Vector应用举例:注意集合类的类 型参数
import java.util.Vector; public class Test { public static void main(String[] args) { Vector<point> theVector = new Vector<point>(); for (int i=0;i<10;i++) { point val = new point(i,i*i); theVector .addElement(val); } for (int k=0;k<theVector.size();k++){ System.out.println(theVector.elementAt(k).y);} class point { int x,y;public point(int i,int j){x=i;y=j;} }
作业
1.编程题: 将以下4个同学的学号、姓名如: ◦ 01,张一 ◦ 02,李二 ◦ 03,王三 ◦ 04,赵四 通过ArrayList进行存储、并遍历该ArrayList,将 其中学号为“02”的学生输出其姓名。 注意:程序中应设计一个学生类用于学号、姓名 等属性的封装。
作业
2.程序填空题 有n个孩子站成一圈,从第一个孩子开 始顺时针方向报数,报到3的人出列, 下一个人继续从1报数,直到最后剩下 一个孩子为止。问剩下第几个孩子。下 面的程序以10个孩子为例,模拟了这个 过程,请完善之(提示:报数的过程被 与之逻辑等价的更容易操作的过程所代 替)。
0 1 4 9 16 25 36 49 64 81
Stack
4.5中提到Stack是Vector的子类,有“后 进先出”的特性,主要体现在两个方法 上:pop和push。使用pop方法可以方便 的将栈顶的元素得到。
import java.util.*; “后进先出” public class testStack{ public static void main(String[] args) { point p; Stack mystack1 = new Stack(); class point Stack<point > mystack1 = new Stack<point>(); for(int i=0; i<5; i++) { { int x,y; } p=new point(); 输出结果为: p.x= i; p.y=i*i; x: 4y:16 mystack1.push(p); x: 3y:9 x: 2y:4 } x: 1y:1 for (int i=0;i<5;i++) x: 0y:0 { p=(point)mystack1.pop(); mystack1.pop(); System.out.println("x: "+p.x+"y:"+p.y ); } } }
第5章 Java集合类
本章目录
Vector Stack Hashtable ArrayList
Vector
Vector可以合理的管理多个对象,并方 便地提供对象的查找、新增等功能。 Vector的Size方法可以返回元素个数的 总数 方法原型为: public int size()
3.编程题
存在如下5个字符串:
第1个点: 0,0 第2个点: 1,1 第3个点: 2,4 第4个点: 3,9 第5个点:4,16
“x=4:y=16” “x=3:y=9” “x=2:y=4” “x=1:y=1” “x=0:y=0”
提取其中以数字形式存在的x、y数值坐标,创 建其对应的点对象。并将这些点对象通过 ArrayList对象来集中管理:如通过ArrayList对 象输出5个点对象的x、y坐标值。且输出形式 为:
0 1 2 3 4 5 6 7 8 9
import java.util.Vector; public class testStack { public static void main(String[] args) { Vector theVector = new Vector(); for (int i=0;i<10;i++) { Integer newInteger = new Integer(i); theVector .addElement(newInteger); } theVector.add(3, new Integer(33)); for (int k=0;k<theVector.size();k++) System.out.println(theVector.elementAt(k).toString()); } }
Vector应ຫໍສະໝຸດ Baidu实例
import java.util.Vector; public class testStack { public static void main(String[] args) { Vector theVector = new Vector(); for (int i=0;i<10;i++) { Integer newInteger = new Integer(i); theVector .addElement(newInteger); } for (int k=0;k<theVector.size();k++) System.out.println(theVector.elementAt(k)); } }
运行 结果 为: 1 2 3 4 5 6 7 8 9
使用Hashtable存储每个 import java.util.Hashtable; public class Test { 学号对应的学生年龄 public static void main(String[] args) { Hashtable<String ,Integer> hTable = new Hashtable<String,Integer>(); hTable.put("003",20); hTable.put("001",19); hTable.put("002",22); if (hTable.containsKey("004")) System.out.print( hTable.get("004")); else { hTable.put("004",21); } 运行结 java.util.Iterator<String> it = hTable.keySet().iterator(); 果为: while (it.hasNext()){ 004:21 String s =it.next(); 003:20 System.out.print(s+":"); System.out.println(hTable.get(s)); 002:22 } 001:19 }
import java.util.*; “后进先出” public class testStack{ public static void main(String[] args) { point p; Stack<point > mystack1 = new Stack<point>(); class point for(int i=0; i<5; i++) { 输出结果为: { int x,y; 元素的个数共为:1 } p=new point(); 元素的个数共为:2 元素的个数共为:3 p.x= i; p.y=i*i; 元素的个数共为:4 mystack1.push(p); 元素的个数共为:5 System.out.println("元素的个数共为: " x: 4y:16 +mystack1.size()); 元素的个数共为:4 } x: 3y:9 元素的个数共为:3 for (int i=0;i<5;i++) x: 2y:4 { 元素的个数共为:2 p=mystack1.pop(); x: 1y:1 System.out.println("x: "+p.x+"y:"+p.y ); 元素的个数共为:1