实验七:Java集合与泛型
JAVA集合框架与泛型

集合框架1,集合概述为了保存数量不确定的数据,以及保存具有映射关系的数据,Java提供了集合类,集合类主要保存、盛装其它数据(集合里只能保存对象,实际上保存的是对象的引用变量),因此集合类也被称为容器类。
Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类,所有的集合类都位于java.util包下。
下图是部分集合框架的梗概:2,CollectionCollection接口是List、Set和Queue接口的父接口,该接口里定义了List、Set和Queue 的共性方法,必须要掌握。
2.1,boolean add(Object o):用于向集合中添加元素,如果集合对象被添加操作改变了,则返回true。
2.2,boolean addAll(Collection c):将集合c里的所有元素添加到指定的集合里,如果集合被添加操作改变了,返回true。
2.3,void clear():清除集合里的所有元素。
2.4,bolean contains(Object o):返回集合里是否包含指定元素。
2.5,boolean containsAll(Collection c):返回集合里是否含集合c里的所有元素。
2.6,boolean isEmpty():返回集合是否为空。
当集合长度为0时,返回true;否则返回false。
2.7,Iterator iterator():返回一个Iterator对象,用于遍历集合里的元素。
2.8,boolean remove(Object o):删除集合中指定元素o,当集合中包含了一个或多个元素o 时,全部删除,返回true。
2.9,boolean removeAll(Collection c):从该集合中删除集合c里包含的元素,删除一个或一个以上元素,返回true。
2.10,boolean retainAll(Collection c):从该集合中删除集合c里不包含的元素,取交集,操作改变了该集合,返回true。
跟我学Java泛型技术及应用实例——Java泛型技术在Java集合中的应用示例

直接报错。而当我们从集合中取出成员元素时直接取出即可,不用进行类型转换,因为已经 规定了里面存放的只能是某种类型。
当然,在集合中除了可以存入定义的泛型类型的对象实例之外,也还可以存入泛型类型 子类的对象实例。
在 Java 语言中将集合设计为 泛型,如下示图为 JDK API 中的 Collection 集合接口的定 义:
增加了泛型支持后的 Java 集合,完全可以记住集合中各个成员元素的数据类型,并可以 在编译时检查集合中元素的类型。即解决一些安全问题;同时还可以让代码变得更加简洁。
杨教授工作室,版权所有,盗版必究, 1/10 页
杨教授工作室,版权所有,盗版必究, 3/10 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
则可以传递该接口的实现类。下面的示例是将 E 设置为 Number 类型: List<Number> numberList= new ArrayList<Number>(); numberList.add(2.0); numberList.add(2); 而下面的示例是将 E 设置为 String 类型:List<String> myList;那工作室 精心创作的优秀程序员 职业提升必读系列资料
2、不采用泛型的集合元素的应用示例 java.util.List oneList=new java.util.ArrayList(); oneList.add("1"); /** 在使用时通过强制类型转换获得正确的值 */ oneList.add(new Integer(2)); String oneElement=(String)oneList.get(0); /** 此时将会出现转换错误而产生异常抛出 */ System.out.println("不采用泛型的集合元素:"+oneElement); String twoElement=(String)oneList.get(1); System.out.println("不采用泛型的集合元素:"+twoElement);
Java集合泛型

1. 集合框架2. 集合操作——线性表1. 集合框架1.1. Collectionjava提供了一种可以存数一组数据的数据结构,其提供了丰富的方法,在实际开发中往往比数组使用的广泛。
这种数据结构成为集合:Collection。
Collection是一个接口,其定义了集合的相关功能方法。
1.1.1. addAll与containsAll方法集合也提供了批处理操作:addAll方法用于将给定集合中的所有元素添加到当前集合中,其方法定义为:例如:containsAll方法用于判断当前集合是否包含给定集合中的所有元素,若包含则返回true。
其方法定义为:01. b o o l e a n a d d A l l (C o l l e c t i o n c )01.C o l l e c t i o n <S t r i n g > c 1 = n e w A r r a y L i s t <S t r i n g >();02.c 1.ad d ("j a v a ");03.c 1.ad d ("c p p "); 04.c 1.ad d ("p h p ");05.c 1.ad d ("c #"); 06.c 1.ad d ("o b je c t i v e -c "); 07.S y s t e m .o u t .p r i n t l n (c 1); // [j a v a , c p p , p h p , c #, o b j e c t i v e -c ] 08.C o l l e c t i o n <S t r i n g > c 2 = n e w H a s h S e t <S t r i n g >(); 09.c 2.ad d A l l (c 1);10. S y s te m .o u t .p r i n t l n (c 2); // [c p p , p h p , c #, j a v a , o b j e c t i v e -c ]01. b o o l e a n c o n t a i n s A l l (C o l l e c t i o n c )Top例如:01.C o l l e c t i o n<S t r i n g>c1=n e w A r r a y L i s t<S t r i n g>();02.c1.a d d("j a v a");03.c1.a d d("c p p");04.c1.a d d("p h p");05.c1.a d d("c#");06.c1.a d d("o b j e c t i v e-c");07.S y s t e m.o u t.p r i n t l n(c1);//[j a v a,c p p,p h p,c#,o b j e c t i v e-c]08.C o l l e c t i o n<S t r i n g>c2=n e w A r r a y L i s t<S t r i n g>();09.c2.a d d("j a v a");10.c2.a d d("c p p");11.S y s t e m.o u t.p r i n t l n(c1.c o n t a i n s A l l(c2));//t r u e1.2. Iterator 迭代器Collection提供了一个遍历集合的通用方式,迭代器(Iterator)。
Java程序设计基础第八章 集合和泛型

8.1 集合类(续)
Map的实现类有HashMap、 IdentityHashMap、WeakHashMap、 TreeMap,以及LinkedHashMap子类,这 些类都是非线程安全的,WeakHashMap是一 种改进的HashMap,如果一个key不再被外部 所引用,那么该key可以被GC回收。 HashTable是线程安全的,HashTable不能 插入null空元素。
8.1 集合类(续)
TreeSet将元素存储在树中,但元素按有序方式 存储,可以按任何次序向TreeSet中添加元素, 但遍历TreeSet时,元素出现的序列是有序的。 在TreeSet中插入元素的效率要低于在 HashSet中插入元素,但比把元素插入到数组 或链表的合适位置要快。 SortedSet接口用于按照排好顺序元素的集合, 排序方式可以是元素的自然顺序(如数字按升序 排列),也可以是由Comparator指定的顺序
8.1 集合类(续)
在ArrayList的前面或中间插入数据时,必须将 其后的所有数据相应的后移,花费较多时间,所 以,当程序添加元素主要是在后面,并且需要随 机地访问其中的元素时,优先使用ArrayList会 得到比较好的性能。 访问LinkedList中的某个元素时,就必须从链 表的一端开始沿着连接方向一个一个元素地去查 找,直到找到所需的元素为止,但在添加元素到 原有元素中间时效率很高,所以,当程序需要经 常在指定位置添加元素,并且按照顺序访问其中 的元素时,优先使用LinkedList。
8.1 集合类(续)
集合是一种可以快速找到已存在元素的数据结构 ,但通常进行元素查找时,是通过某些关键信息 来查找与之相关的对象,映射类是解决此类问题 的数据结构之一。映射类储存的数据是“键/值” 对,将“键”与“值”关联起来,给出键就可以查找 到与之相关的值。
Java集合和泛型

Java集合和泛型 ⼀、集合(Collections) Java使⽤集合来组织和管理对象。
1、Java的集合类 集合类主要负责保存、盛装和管理对象,因此集合类也被称为容器类。
集合类分为Set、List、Map和Queue四⼤体系。
Set 代表⽆序、不可重复集合;List 代表有序、可重复集合;Map 代表具有映射关系元素的集合;Queue 代表队列,实现元素的先进先出管理。
数组也是⼀种集合类,它是能随机存储和访问引⽤序列的诸多⽅法中最⾼效的⼀种,当追求⾼效的数据访问时,数组是很不错的选择。
2、集合与泛型 所有集合类都位于java.util包中,集合中只能保存对象的引⽤。
集合类把它所含有的元素看成是Object的实例,这样⽅便但是也有隐患,即多个类型不同的元素被放⼊⼀个集合中,会增加集合访问时类型转换的困难,甚⾄会产⽣错误。
泛型的引⼊改善了这种情况,使⽤泛型来限制集合⾥元素的类型,并让集合记住元素的类型。
这样可以允许编译器检查加⼊集合的元素类型,避免值类型不⼀致的错误。
3、Java集合框架介绍 集合框架是⼀个⽤来表⽰和操作集合的统⼀架构,包含实现集合的接⼝和类。
Java的整个集合框架围绕⼀组标准接⼝设计,开发者可以直接使⽤这些接⼝的标准实现,也可以使⽤集合框架接⼝实现⾃定义的集合实现类。
集合框架的设计应满⾜⼀下三个⽬标:⾼性能。
保证算法的实现效率。
互操作性。
⾼扩展性。
对集合进⾏扩展是简单的,只需要实现特定接⼝即可。
4、Java集合框架基于统⼀的⽅式组织和管理对象,包含3个⽅⾯:接⼝。
接⼝定义了集合操作的⾏为规约,它形成集合的⾼层视图。
实现类。
是集合接⼝的具体表现。
本质上说,是可重复使⽤的数据结构。
算法。
实现集合操作中常⽤的算法,⽐如搜索和排序。
这些算法通过多态实现,即相同的⽅法在相似的接⼝上有着不同的实现 5、集合接⼝ 集合框架定义了⼀组接⼝,接⼝申明了对特定类型的集合可以执⾏的操作。
java实验报告——异常、集合类和泛型

for(int x=13;x<Stu.length;x++) {
Stu[x]-generated method stub //XueShengXinXi[] Stu=ChuShiHua(); //初始化系统数据 XueShengXinXi[] Stu=new XueShengXinXi[100]; Stu[0]=new XueShengXinXi("专业", "班级", "姓名", "性别", "电话", "家庭住址 "); Stu[1]=new XueShengXinXi(" 自 动 化 ", " 自 动 化 10-1", " 张 三 ", " 男 ", "63256", "fnhjfdhsdbh"); Stu[2]=new XueShengXinXi("自动化", "自动化10-2", "李四", "女", "653256", "nfhggdfddhsdbh"); Stu[3]=new XueShengXinXi(" 电 子 ", " 电 子 10-1", " 王 五 ", " 男 ", "6156", "fnhvjbh");
Java集合:Collection、List、Set、Map、泛型

Java集合:Collection、List、Set、Map、泛型0.集合的学习思路层⾯1:应⽤层⾯ √可以掌握重点的集合类的使⽤步骤层⾯2:理解层⾯【⾯试前掌握】理解ArrayList的源码理解HashMap的源码掌握:Collection和Map的对⽐List和Set的对⽐ArrayList和Vector的对⽐ArrayList和LinkedList的对⽐HashMap和Hashtable的对⽐Collections和Collection的对⽐⼀、集合的理解和好处1.理解集合:就是⼀种容器,都是⽤于保存⼀组元素2.集合和数组的对⽐:数组的不⾜:数组的长度必须提前指定,⽽且⼀旦指定不能更改数组只能保存相同类型的元素集合:集合在使⽤时,长度不⽤指定,⽽且可以实现⾃动扩容或截断集合没有指定泛型之前,默认保存的是任意类型的元素(Object类型)指定泛型之后,可以保存对应类型的元素⽰例代码:// 使⽤数组--------------------Animal[] animals = new Animal[3];animals[0] = new Animal();animals[1] = new Animal();animals[2] = new Animal();Animal[] newAni = new Animal[animals.length+1];//复制数组//添加新元素animals=newAni;// 使⽤集合--------------------List list= new ArrayList();list.add(new Animal());①创建时如果不指定容量初始值,Hashtable 默认的初始⼤⼩为11,之后每次扩充,容量变为原来的2n+1。
HashMap 默认的初始化⼤⼩为16。
之后每次扩充,容量变为原来的2倍。
②创建时如果给定了容量初始值,那么 Hashtable 会直接使⽤你给定的⼤⼩,⽽ HashMap 会将其扩充为2的幂次⽅⼤⼩(HashMap 中的tableSizeFor()⽅法保证,下⾯给出了源代码)。
java集合泛型

Set
简介
虽然Set同List的实现方式大不一样。List基本上都是以Array为基 础。但是Set则是在HashMap的基础上来实现的,这个就是Set和 List的根本区别。 Set集合中的对象不按特定的方式排序,并且没有重复对象 Iterator it=set.iterator(); while(it.hasNext()) { String oldStr=it.next(); }
泛型代码和虚拟机
虚拟机中没有泛型,只有普通的类和方法。 所有的类型参数都用它们的边界替换。 桥方法被合成为保持多态的。 为保持类型安全性,必要时插入强制类型转换
约束与局限性
不能等同于基本类型
不能用类型参数替换基本类型。 不能实例化泛型类型。但是,可以通过调用Class.newInstance和 Array.newInstance方法,利用反射构造泛型对象和数组。
泛型应用
原始处理
在Java 5之前,为了让类有通用性,往往将参数类型、 返回类型设置为Object类型,当获取这些返回类型来使 用时候,必须将其“强制”转换为原有的类型或者接 口,然后才可以调用对象上的方法 可以使用<T>来声明一个类型持有者名称,然后就可以 把T当作一个类型代表来声明成员、参数和返回值类型 ; 还可以定义泛型接口,泛型方法;
List总结
所有的List中只能容纳单个不同类型的对象组成的表,而 不是Key-Value键值对。例如:[ tom,1,c ]; 所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]; 所有的List中可以有null元素,例如[ tom,null,1 ]; 基于Array的List(Vector,ArrayList)适合查询,而 LinkedList(链表)适合添加,删除操作。 就LinkedList.add方法用于将对象添加到列表的尾部,但 是如果希望能够添加到中间位置,则需要使用迭代器。但 只有对有序的集合使用迭代器添加元素才有意义
JAVA实验报告材料-集合框架及泛型机制

Java语言程序设计C实验报告集合框架及泛型机制学生姓名专业、班级________________________________________ 指导教师 _______________________________________ 成绩_______________________________计算机与信息工程学院年月日一、实验目的学习课程相关章节知识,通过上机练习,掌握以下知识:1.掌握List 接口下ArrayList 及LinkedList 的使用方法。
2.掌握Map 接口下HashMap 及HashTable 的使用方法3.掌握集合中泛型的使用二、实验内容利用集合完成象数据库那样存储数据,并且可以简单查询,利用map 存储学生信息,字段如下:id ,name,age ,实现步骤:(1)创建类,类图如下:2)在main 方法编写逻辑代码3)运行程序并测试结果package ;public class Student {private String name ;private int age ;private String id ;public String getName() {return namepublic void setName(String name ) {this .name = name ;}public int getAge() {return age ;}public void setAge( int age ) {this .age = age ;}public String getId() {return id ;}public void setId(String id) {this .id = id;}public Student(String name , int age , String id ) { super ();this .name = name ;this .age = age ;this .id = id;}public void sayHi(){System. out .println( "name=" + this .getName()+ "age=" + this .getAge()+ " "+ "id=" + this .getId());}//Databace 类package ;import java.util.Collection;import java.util.HashMap;import java.util.Iterator;public class Databace {private Student a;public Databace() {super ();map = new HashMap<String,Student>();}public Student getA() {return a;}public void setA(Student a) {this .a = a;}HashMap<String,Student> map ;public void delete(){ID" );System. out .println( " 请输入要删除表中元素String id =Test. sc.next();if (map .containsKey( id)){map .remove( id);Collection<Student> c= map .values();IteratorvStude nt> it= c.iterator();while (it .hasNext()){a= it .n ext();a.sayHi();}}else{System. out .println("表中没有该元素");}}public void in sert(){System. out .println("按顺序输入id、age、name");String name =Test. sc.next();int age =Test. sc.n ext In t();String id =Test. sc.next();a= new Student( name ,age ,id );map .put( id , a);System. out .println("成功的插入一条记录”);public void update(){System. out .println("请输入要修改表中元素ID");String id =Test. sc.next();if (map .containsKey( id)){map .remove( id);System. out .println("按顺序输入name,age,id");id =Test. sc.next();String name =Test. sc.next();int age =Test. sc.nextInt();a= new Student( id ,age ,name );map .put( id , a);}else{System. out .println("表中没有该元素");}}public void select()System. out .println("请输入要查询的方式 1.查询单行 2.查询全部"); int i=Test. sc.nextInt();switch (i){case 1:{System. out .println("请输入要查询表中元素ID");String id =Test. sc.next();{a= map .get( id);a.sayHi();}else{System. out .println("表中没有该元素");}}break ;case 2:{Collection<Student> c=map .values();Iterator<Student> it= c.iterator();while (it .hasNext()){a= it .next();a.sayHi();}}break ;}}}//testpackage ;import java.util.*;public class Test {/*** @param args */public static Scanner sc= new Scanner(System. public static void main(String[] args ){// TODO Auto-generated method stuint i=0;Databace d = new Databace();while (i==0){int j=Test. sc.nextInt(); switch (j){case 1:d .insert(); breakcase 2: d .select(); breakcase 3: in);System. out .println( System. out .println( System. out .println( System. out .println( System. out .println( "1.储存学生信息") "2.查询学生信息") "3.修改学生信息") "4.删除学生信息") "退出");d .update(); breakcase 4:d .delete(); break default :i=1;}}}}提示:用id 做map 集合的键部分,用student 对象做map 集合的值部分效果显示:三、实验思想四、实验结果五、实验心得。
java泛型方法

java泛型方法Java泛型方法的介绍Java语言是一种使用泛型来提供类型安全性和重用代码的编程语言。
泛型方法是Java语言中的一种特殊语法,它允许在方法中定义一个或多个类型参数。
泛型方法使得我们可以在方法的声明和调用时指定参数的类型,从而实现代码的可重用性和类型安全性。
泛型方法的声明形式为:在方法返回类型之前加上`<T>`,`T`表示泛型类型。
在方法参数列表中可以使用`T`作为参数的类型,也可以使用`T`作为返回值的类型。
使用泛型方法的一个常见的场景是在集合类中的泛型类型参数的推断。
例如,我们可以定义一个泛型方法来计算集合中的最大元素:```javapublic static <T extends Comparable<T>> T getMax(List<T> list) {T max = list.get(0);for (int i = 1; i < list.size(); i++) {if (list.get(i).compareTo(max) > 0) {max = list.get(i);}}return max;}```在这个例子中,我们使用了一个类型参数`T`来表示集合中的元素类型。
`T`被限定为实现了`Comparable`接口的类型,这样我们就可以使用`compareTo()`方法来比较元素的大小。
在方法内部,我们先获取列表中的第一个元素作为初始的最大值,然后遍历列表中的其他元素,逐个比较并更新最大值。
通过泛型方法,我们可以在调用时指定实际类型的集合,而无需在方法中重复编写多个版本的代码。
例如,我们可以这样调用这个方法:```javaList<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);int maxNumber = getMax(numbers);```这样就可以得到集合中的最大整数了。
第8章 Java泛型与集合类

第8章 Java 泛型与集合类核心内容:1. 集合的作用与概念2. 泛型的作用与用法。
3. Set 、List 、Map 的用法4. Iterator 、Enumeration 的用法8.1 早期的集合类集合可理解为一个容器,该容器主要指映射(map )、集合(set )、列表(list )、散列表(hashtable )等抽象数据结构。
容器可以包含有多个元素,这些元素通常是一些Java 对象。
针对上述抽象数据结构所定义的一些标准编程接口称之为集合框架。
集合框架主要是由一组精心设计的接口、类和隐含在其中的算法所组成,通过它们可以采用集合的方式完成Java 对象的存储、获取、操作以及转换等功能。
集合框架的设计是严格按照面向对象的思想进行设计的,它对上述所提及的抽象数据结构和算法进行了封装。
封装的好处是提供一个易用的、标准的编程接口,使得在实际编程中不需要再定义类似的数据结构,直接引用集合框架中的接口即可,提高了编程的效率和质量。
此外还可以在集合框架的基础上完成如堆栈、队列和多线程安全访问等操作。
在集合框架中有几个基本的集合接口,分别是Collection 接口、List 接口、Set 接口和Map 接口,它们所构成的层次关系如图8-1所示。
图8-1 集合框架层次关系图(1) Collection 接口是一组允许重复的对象。
(2) Set 接口继承Collection ,但不允许集合中出现重复元素。
(3) List 接口继承Collection ,允许集合中有重复,并引入位置索引。
(4)Map 接口与Collection 接口无任何关系,Map 的典型应用是访问按关键字存储的值,所包含的是键—值对,而不是单个独立的元素。
作为对上述接口的实现,Java 语言目前主要提供下述类的定义,如表8-1所示Collection 接口Set 接口 List 接口Map 接口表8-1 集合接口及其类的实现接口集合类的实现历史集合类Set HashSetTreeSetList ArrayList V ectorLinkedList StackMap HashMap HashtableTreeMap由于在JDK1.5当中增加了泛型,我们把JDK1.5之前不支持泛型的集合类称之为早期集合类。
如何使用泛型与泛型集合

如何使用泛型与泛型集合泛型是一种在编程中广泛应用的概念,它使得代码更灵活,可重用,并提高了代码的类型安全性。
在这篇文章中,我们将详细介绍什么是泛型以及如何使用泛型和泛型集合。
一、什么是泛型泛型是一种参数化类型的概念,它可以在类、接口、方法中使用。
它允许我们在编译时指定类型参数的具体类型,从而实现代码的重用和灵活性。
泛型的主要优点是:1.类型安全:使用泛型可以在编译时进行类型检查,避免运行时出现类型错误。
2.代码重用:泛型允许我们编写通用的算法和数据结构,在不同的类型上重用。
3.程序可读性提高:泛型代码可以提高程序的可读性和可维护性,因为代码中的类型信息更明确。
二、使用泛型1.声明泛型类在 Java 中,我们可以通过在类名后面使用尖括号插入类型参数来声明泛型类。
例如:```public class GenericClass<T>private T value;public T getValureturn value;}public void setValue(T value)this.value = value;}```上面的代码中,`GenericClass` 是一个泛型类,`<T>` 表示类型参数,可以在类的其他成员中使用这个类型参数。
2.使用泛型类使用泛型类时,需要通过实际类型替换类型参数。
例如:```GenericClass<Integer> genericClass = new GenericClass<>(;genericClass.setValue(10);System.out.println(genericClass.getValue(); // 输出 10```在上面的代码中,`GenericClass<Integer>` 表示实际的类型参数是`Integer`,所以 `setValue` 方法只接受 `Integer` 类型的参数。
实验七:Java集合与泛型

实验七Java集合与泛型一、实验目的1)掌握集合的概念、体系结构、分类及使用场景2)了解Set接口及主要实现类(HashSet、TreeSet)3)了解List接口及主要实现类(ArrayList、LinkedList、Vector)4)掌握ArrayList的使用5)掌握ArrayList与Vector的区别6)了解Map接口及主要实现类(HashMap、TreeMap、HashTable)7)掌握HashMap的使用8)掌握HashMap与HashTable的区别二、实验环境JDK1.6+Eclpise3.2三、实验准备1)复习课件中理论知识2)练习课堂所讲的例子四、实验内容1、编写程序练习List集合的基本使用:1) 创建一个只能容纳String对象名为names的ArrayList集合;2)按顺序往集合中添加5个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”;3)对集合进行遍历,分别打印集合中的每个元素的位置与内容;4)首先打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。
2、编写程序练习Map集合的基本使用:1)创建一个只能值只能容纳String对象的person的HashMap集合;2)往集合中添加5个“键-值”对象:id—>”1”、name—>”张三”、sex—>”男”、age—>”25”、love—>”爱学Java”3)对集合进行遍历,分别打印集合中的每个元素的键与值;4)首先打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。
五、验过程及结果第1题调试结果如下图:第2题调试结果如下图:六、实验感想本次实验掌握了集合的概念、体系结构、分类及使用场景,了解了Set接口及主要实现类(HashSet、TreeSet),了解了解List接口及主要实现类(ArrayList、LinkedList、Vector),掌握ArrayList的使用及其与Vector的区别,了解了Map接口及主要实现类(HashMap、TreeMap、HashTable),掌握了掌握HashMap的使用及与HashTable的区别等。
Java程序设计课件:泛型与集合

List的常用方法
方法名 add(int index, E element) addAll(int index, Collection<?
extends E> c) get(int index)
indexOf(Object o)
lastIndexOf(Object o)
程序员使用集合框架提供的接口和类,在具体应 用时,不必考虑这些数据结构算法的实现细节, 只需用这些类创建对象并直接应用即可,这大大 提高了编程效率。
2023/12/28
8/35
6.2.1集合框架
核心接口主要有Collection、List、Set、 Queue、Deque和Map。
Collection
方法名 add(E e) clear() equals(Object o) isEmpty() size() iterator() hashCode() toArray() removeAll(Collection<?> c) retainAll(Collection<?> c) contains(Object o) remove(Object o) containsAll(Collection<?> c)
将集合 c中的所有元素添加到当前集合中,添加成功 返回true。
11/35 2023/12/28
Set 接口
Set接口用来描述数据结构中的集合。它具有 与 Collection 完全一样的接口,只是Set 不 保存重复的元素,向Set添加元素时,不保证 元素添加后与添加的顺序一致。实现它的常 用子类有TreeSet类和HashSet类。
remove(int index) set(int index, E element) listIterator()
JAVA实验报告-集合框架及泛型机制

Java语言程序设计C实验报告集合框架及泛型机制学生姓名专业、班级指导教师成绩计算机与信息工程学院年月日一、实验目的学习课程相关章节知识,通过上机练习,掌握以下知识:1.掌握List接口下ArrayList及LinkedList的使用方法。
2.掌握Map接口下HashMap 及HashTable的使用方法3.掌握集合中泛型的使用二、实验内容利用集合完成象数据库那样存储数据,并且可以简单查询,利用map存储学生信息,字段如下: id ,name,age,实现步骤:(1)创建类,类图如下:(2)在main方法编写逻辑代码(3)运行程序并测试结果package com、cn;public class Student {private String name;private int age;private String id;public String getName() {return name;}public void setName(String name) {this、name = name;}public int getAge() {return age;}public void setAge(int age) {this、age = age;}public String getId() {return id;}public void setId(String id) {this、id = id;}public Student(String name, int age, String id) {super();this、name = name;this、age = age;this、id = id;}public void sayHi(){System、out、println("name="+this、getName()+"age="+this、getAge()+" "+"id="+this、getId());}}//Databace类package com、cn;import java、util、Collection;import java、util、HashMap;import java、util、Iterator;public class Databace {private Student a;public Databace() {super();map=new HashMap<String,Student>();}public Student getA() {return a;}public void setA(Student a) {this、a = a;}HashMap<String,Student> map;public void delete(){System、out、println("请输入要删除表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){map、remove(id);Collection<Student> c=map、values();Iterator<Student> it=c、iterator();while(it、hasNext()){a=it、next();a、sayHi();}}else{System、out、println("表中没有该元素");}}public void insert(){System、out、println("按顺序输入id、age、name");String name=Test、sc、next();int age=Test、sc、nextInt();String id=Test、sc、next();a=new Student(name,age,id);map、put(id, a);System、out、println("成功的插入一条记录");}public void update(){System、out、println("请输入要修改表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){map、remove(id);System、out、println("按顺序输入name,age,id");id=Test、sc、next();String name=Test、sc、next();int age=Test、sc、nextInt();a=new Student(id,age,name);map、put(id, a);}else{System、out、println("表中没有该元素");}}public void select(){System、out、println("请输入要查询的方式1、查询单行2、查询全部");int i=Test、sc、nextInt();switch(i){case 1:{System、out、println("请输入要查询表中元素ID");String id=Test、sc、next();if(map、containsKey(id)){a=map、get(id);a、sayHi();}else{System、out、println("表中没有该元素");}}break;case 2:{Collection<Student> c=map、values();Iterator<Student> it=c、iterator();while(it、hasNext()){a=it、next();a、sayHi();}}break;}}}//testpackage com、cn;import java、util、*;public class Test {/*** @param args*/public static Scanner sc=new Scanner(System、in);public static void main(String[] args){// TODO Auto-generated method stuint i=0;Databace d=new Databace();while(i==0){System、out、println("1、储存学生信息");System、out、println("2、查询学生信息");System、out、println("3、修改学生信息");System、out、println("4、删除学生信息");System、out、println("退出");int j=Test、sc、nextInt();switch(j){case 1:d、insert();break;case 2:d、select();break;case 3:d、update();break;case 4:d、delete();break;default:i=1;}}}}提示:用id做map集合的键部分,用student对象做map集合的值部分效果显示:三、实验思想四、实验结果五、实验心得。
java实验报告——异常、集合类和泛型

Stu[7]=new XueShengXinXi(" 计 算 机 ", " 计 算 机 10-1", " 黄 龙 ", " 男 ", "65584", "bbbdddfnhjbh");
System.out.println("欢迎使用广石化电信学院通讯录系统!");
非0为退出
ZhuJieMian: for(int exit=0;exit==0;)//exit为退出主菜单的指示变量,0为不退出,
{ System.out.println(); System.out.println("************************************"); System.out.println("****************主菜单****************"); System.out.print(" 1。查询学生信息\t\t"); System.out.println("2。新增学生信息"); System.out.print(" 3。修改学生信息\t\t"); System.out.println("4。删除学生信息"); System.out.print(" 5。恢复已被删除信息\t\t"); System.out.println("6。退出"); System.out.println("************************************"); System.out.println("************************************"); System.out.print("请选择你要操作的功能序号:"); Scanner scn_input=new Scanner(System.in); String XuHao=scn_input.next(); System.out.println();
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验七Java集合与泛型
一、实验目的
1)掌握集合的概念、体系结构、分类及使用场景
2)了解Set接口及主要实现类(HashSet、TreeSet)
3)了解List接口及主要实现类(ArrayList、LinkedList、Vector)
4)掌握ArrayList的使用
5)掌握ArrayList与Vector的区别
6)了解Map接口及主要实现类(HashMap、TreeMap、HashTable)
7)掌握HashMap的使用
8)掌握HashMap与HashTable的区别
二、实验环境
JDK1.6+Eclpise3.2
三、实验准备
1)复习课件中理论知识
2)练习课堂所讲的例子
四、实验内容
1、编写程序练习List集合的基本使用:
1) 创建一个只能容纳String对象名为names的ArrayList集合;
2)按顺序往集合中添加5个字符串对象:“张三”、“李四”、“王五”、“马六”、“赵七”;
3)对集合进行遍历,分别打印集合中的每个元素的位置与内容;
4)首先打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。
2、编写程序练习Map集合的基本使用:
1)创建一个只能值只能容纳String对象的person的HashMap集合;
2)往集合中添加5个“键-值”对象:id—>”1”、name—>”张三”、sex—>”男”、age—>”25”、love—>”爱学Java”
3)对集合进行遍历,分别打印集合中的每个元素的键与值;
4)首先打印集合的大小,然后删除集合中的键为age的元素,并显示删除元素的内容,并再次打印集合的大小。
五、验过程及结果
第1题调试结果如下图:
第2题调试结果如下图:
六、实验感想
本次实验掌握了集合的概念、体系结构、分类及使用场景,了解了Set接口及主要实现类(HashSet、TreeSet),了解了解List接口及主要实现类(ArrayList、LinkedList、Vector),掌握ArrayList的使用及其与Vector的区别,了解了Map接口及主要实现类(HashMap、TreeMap、HashTable),掌握了掌握HashMap的使用及与HashTable的区别等。
七、附录
第1题源码:
package zsl;
import java.util.ArrayList;
import java.util.List;
public class ListStudy {
public static void main (String[] args){
List<String> names=new ArrayList <String>();
System.out.println("下面是集合的所有元素:");
names.add("张三");
names.add("李四");
names.add("王五");
names.add("马六");
names.add("钱七");
for (int i=0;i<names.size();i++){
System.out.println("位置:"+i+"的元素内容为:"+names.get(i));
}
System.out.println("目前的集合大小为:"+names.size());
System.out.println("删除的第3个元素内容为:"+names.get(2));
names.remove(2);
System.out.println("删除操作后,集合的第3个元素内容为:
"+names.get(2));
System.out.println("删除操作后,集合的大小为"+names.size());
}
}
第2题源码:
package zsl;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import com.sun.corba.se.impl.encoding.OSFCodeSetRegistry.Entry; public class MapStudy {
public static void main (String[] args){
Map<String,String> person=new HashMap<String,String>();
System.out.println("下面是集合的所有元素:");
person.put("id","1");
person.put("name","张三");
person.put("sex","男");
person.put("ade","25");
person.put("love","学习Java");
for(Iterator<java.util.Map.Entry<String, String>>
iter=person.entrySet().iterator();iter.hasNext();){
Map.Entry entry=(Map.Entry) iter.next();
System.out.println("键:"+entry.getKey()+"-->值
"+entry.getValue());
}
System.out.println("目前集合的大小为:"+person.size());
System.out.println("删除的键age的内容为:"+person.get("age"));
person.remove("age");
System.out.println("删除操作后,集合的大小为"+person.size());
}
}。