Java 泛型与集合
1、List练习,请用泛型的写法来完成。
已知有一个Worker 类如下:
public class Worker {
private int age;
private String name;
private double salary;
public Worker (){}
public Worker (String name, int age, double salary){
this.name = name; this.age = age;
this.salary = salary; }
public int getAge() { return age; }
public void setAge(int age) { this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public double getSalary(){ return salary; }
public void setSalary(double salary){ this.salary = salary; }
public void work(){
System.out.println(name + “ work”); }
}
完成下面的要求
1) 创建一个List,在List 中增加三个工人,基本信息如下:
姓名 年龄 工资
zhang3 18 3000
li4 25 3500
wang5 22 3200
2) 在li4 之前插入一个工人,信息为:姓名:zhao6,年龄:24,工资3300
3) 删除wang5 的信息
4) 利用for 循环遍历,打印List 中所有工人的信息
5) 利用迭代遍历,对List 中所有的工人调用work 方法。
public class Worker {
private int age;
private String name;
private double salary;
public Worker() {
}
public Worker(int age, String name, double salary) {
super();
this.age = age;
this.name = name;
this.salary = salary;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Worker [age=" + age + ", name=" + name + ", salary=" + salary + "]";
}
}
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class TestWorker { public static void main(String[] args) { List<Worker> list = new ArrayList<>(); list.add(new Worker(18,"zhang3",3000));
list.add(new Worker(25,"li4",3500));
list.add(new Worker(22,"wang5",3200)); list.add(1,new Worker(24,"zhao6",3300)); list.remove(3); for(int i = 0;i<list.size();i++)
{
System.out.println(list.get(i));
} System.out.println("迭代器方式");
Iterator<Worker> it= list.iterator();
//判断能否移动
while(it.hasNext())
{
//移动指针到下一条数据,同时获取数据
Worker p=it.next();
System.out.println(p.toString()); }
} }

2、List集合遍历
在程序开发中,经常需要遍历集合中的所有元素。针对这种需求,JDK专门提供了一个接口Iterator。为了使初学者熟悉Iterator迭代器的使用,本案例将演示如何使用Iterator迭代器遍历集合中的元素。
设计思路(实现原理)
1) 编写一个类Example02
2) 在类中定义一个List集合,并向集合中添加数据
3) 通过调用List集合的iterator()方法获得迭代器对象
4) 在while循环条件中使用hashNext()方法判断集合中是否存在下一个元素,如果存在,则调用next()方法将元素取出,否则说明已到达了集合末尾,停止遍历元素
import java.util.*;
public class Example02 { public static void main(String[] args) {
List<String> list = new ArrayList<String>();
list.add("abc1");
list.add("abc2");
list.add("abc3");
list.add("abc4");
Iterator<String> it = list.iterator();
while (it.hasNext()) {
Object obj = it.next();
System.out.println(obj);
}
}
}

3、去除集合中的重复元素。
(1)编写一个类,类中有二个方法,一个能够去除给定ArrayList中的重复元素,并得到新的ArrayList;一个能够输出集合,使得在运行过程中能观察到集合中元素的变化。
(2)编写一个主类,测试上述类的功能,并给出测试结果。
import java.util.ArrayList;
import java.util.HashSet; public class RemoveByHashSet {
public static void main(String[] args){
ArrayList<String> l=new ArrayList<String>();
l.add("java");
l.add("php");
l.add("C");
l.add("java");
l.add("C");
System.out.println(l);
HashSet<String> s=new HashSet<String>(l);
ArrayList<String> al=new ArrayList<String>(s);
System.out.println(al);
}
}

HashMap的使用,请用泛型的写法。
已知某学校的教学课程内容安排如下:
完成下列要求:
(1) 使用一个Map,以老师的名字作为键,以老师教授的课程名作为值,表示上述课程安排。
(2) 增加了一位新老师Allen 教JDBC
(3) Lucy 改为教CoreJava
(4) 用两种方式遍历Map,输出所有的老师及老师教授的课程
(5) 利用Map,输出所有教JSP 的老师。
import java.util.*;
public class CourseMap {
public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("Tom","CoreJava");
map.put("John","Oracle");
map.put("Susan","Oracle");
map.put("Jerry","JDBC");
map.put("Jim","Unix");
map.put("Kevin","JSP");
map.put("Lucy","JSP"); System.out.println("Map修改前遍历:");
Set<String> keySet = map.keySet();
for(String key : keySet){
System.out.println(key+"\t"+map.get(key));
}
map.put("Allen","JDBC"); map.put("Lucy","CoreJava"); System.out.println("Map修改后遍历:");
Iterator<String> iterator = keySet.iterator();
while (iterator.hasNext()) {
String key = (String) iterator.next();
System.out.println(key+"\t"+map.get(key));
} System.out.println("教授JSP的老师姓名:");
for(String key : keySet){
if(map.get(key).equals("JSP")){
System.out.println(key);
}
} }
}

Java 泛型与集合的更多相关文章
- Java泛型和集合之泛型VS模板
Java的泛型很像C++中的模板,说到Java 泛型和C++中的模板的关系时,有两个重要的方面需要被考虑到:语法和语义.语法看起来是相似的,可是语义却明显是不同的. 在语法上讲,选择尖括号 是因为他 ...
- Java泛型和集合之泛型介绍
在声明一个接口和类的时候可以使用尖括号带有一个或者多个参数但是当你在声明属于一个接口或者类的变量的时候或者你在创建一个类实例的时候需要提供他们的具体类型.我们来看下下面这个例子 List<Str ...
- Java泛型与集合笔记
第一章 Java的泛型为了兼容性和防止代码爆炸,在编译成字节碼时会进行类型擦除,编译器自动添加代码做类型转换(用到List<Integer>的地方用Integer来做转换),自动做装箱拆箱 ...
- java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨
java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...
- 牛客网Java刷题知识点之泛型概念的提出、什么是泛型、泛型在集合中的应用、泛型类、泛型方法、泛型接口、泛型限定上限、泛型限定下限、 什么时候使用上限?泛型限定通配符的体现
不多说,直接上干货! 先来看个泛型概念提出的背景的例子. GenericDemo.java package zhouls.bigdata.DataFeatureSelection; import ja ...
- java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法
问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...
- Java:泛型基础
泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...
- java泛型基础
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法. Ja ...
- 关于Java泛型的使用
在目前我遇到的java项目中,泛型应用的最多的就属集合了.当要从数据库取出多个对象或者说是多条记录时,往往都要使用集合,那么为什么这么使用,或者使用时有什么要注意的地方,请关注以下内容. 感谢Wind ...
随机推荐
- ROC-RK3328-CC开源主板运行LibreELEC系统
LibreELEC是运行Kodi媒体中心的轻量级操作系统,基于Linux内核发行,系统为适配Kodi运行环境,做了许多优化和精简,运行速度快,操作简单.是一款很优秀的多功能播放器操作系统. ROC-R ...
- #Week3 Linear Regression with Multiple Variables
一.Multiple Features 这节课主要引入了一些记号,假设现在有n个特征,那么: 为了便于用矩阵处理,令\(x_0=1\): 参数\(\theta\)是一个(n+1)*1维的向量,任一个训 ...
- CF1336C Kaavi and Magic Spell
CF1336C Kaavi and Magic Spell 区间dp 题意 给一个长度为 \(n\) 的字符串 \(S\) 和一个长度为 \(m\) 的字符串\(T\) ,\(1\le m\le n\ ...
- 顺序表的C语言实现
在现实应用中,有两种实现线性表数据元素存储功能的方法,分别是顺序存储结构和链式存储结构.顺序表操作是最简单的操作线性表的方法.下面的代码实现了顺序表的几种简单的操作.代码如下 //start from ...
- spring cloud系列教程第一篇-介绍
spring cloud系列教程第一篇-介绍 前言: 现在Java招聘中最常见的是会微服务开发,微服务已经在国内火了几年了,而且也成了趋势了.那么,微服务只是指spring boot吗?当然不是了,微 ...
- Constant Palindrome Sum(贪心*RMQ)
传送门 怎么说呢,想了几个小时没做出来实在可惜. \(\color{Red}{首先肯定想到暴力嘛!但是x定值有那么多值可以取,怎么办呢?}\) 但是题目中有一个很关键的条件 \[a[i]>=1\ ...
- 正方形已知两点对角线求另外两点(POJ2002)
至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include <bits/stdc++.h> u ...
- SpringBoot:Demo
目录 Demo 准备工作 登录+拦截器 Restful CRUD Restful架构 查询所有员工 添加员工 员工修改功能 HiddenHttpMethodFilter 删除员工 定制错误页面 注销功 ...
- Java 四种权限修饰符
Java 四种权限修饰符访问权限 public protected (default) private 同一个类(我自己) yes yes yes yes 同一包(我邻居) yes yes yes n ...
- 使用反射模拟struts2属性注入功能
1.在项目开发中,如果没有使用框架进行数据绑定与封装,则可能会写大量的类似下面的代码: String value=request.getParameter("v"); if(nul ...