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 泛型与集合的更多相关文章

  1. Java泛型和集合之泛型VS模板

    Java的泛型很像C++中的模板,说到Java 泛型和C++中的模板的关系时,有两个重要的方面需要被考虑到:语法和语义.语法看起来是相似的,可是语义却明显是不同的. 在语法上讲,选择尖括号  是因为他 ...

  2. Java泛型和集合之泛型介绍

    在声明一个接口和类的时候可以使用尖括号带有一个或者多个参数但是当你在声明属于一个接口或者类的变量的时候或者你在创建一个类实例的时候需要提供他们的具体类型.我们来看下下面这个例子 List<Str ...

  3. Java泛型与集合笔记

    第一章 Java的泛型为了兼容性和防止代码爆炸,在编译成字节碼时会进行类型擦除,编译器自动添加代码做类型转换(用到List<Integer>的地方用Integer来做转换),自动做装箱拆箱 ...

  4. java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类、内部类应用于泛型探讨

    java 泛型深入之Set有用工具 各种集合泛型深入使用演示样例,匿名内部类.内部类应用于泛型探讨 //Sets.java package org.rui.generics.set; import j ...

  5. 牛客网Java刷题知识点之泛型概念的提出、什么是泛型、泛型在集合中的应用、泛型类、泛型方法、泛型接口、泛型限定上限、泛型限定下限、 什么时候使用上限?泛型限定通配符的体现

    不多说,直接上干货! 先来看个泛型概念提出的背景的例子. GenericDemo.java package zhouls.bigdata.DataFeatureSelection; import ja ...

  6. java数据类型:集合存储元素类型限制<泛型> ;自定义类指定泛型<T> 以及限制用法;派生子类泛型<T> super(泛型内参数); 泛型通配符?以及?限制用法

    问题背景 Java 集合有个缺点,把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时 该对象的编译类型就变Object类型(其 ...

  7. Java:泛型基础

    泛型 引入泛型 传统编写的限制: 在Java中一般的类和方法,只能使用具体的类型,要么是基本数据类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制就会束缚很多! 解决这种限制的 ...

  8. java泛型基础

    泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法.  Ja ...

  9. 关于Java泛型的使用

    在目前我遇到的java项目中,泛型应用的最多的就属集合了.当要从数据库取出多个对象或者说是多条记录时,往往都要使用集合,那么为什么这么使用,或者使用时有什么要注意的地方,请关注以下内容. 感谢Wind ...

随机推荐

  1. 以内存级速度实现存储?XPoint正是我们的计划

    随着计算能力虚拟化技术的普及,存储机制在速度上远逊于内存这一劣势开始变得愈发凸显. 这一巨大的访问速度鸿沟一直是各项存储技术想要解决的核心难题:纸带.磁带.磁盘驱动器乃至闪存记忆体等等,而如今最新一代 ...

  2. 信息竞赛进阶指南--递归法求中缀表达式的值,O(n^2)(模板)

    // 递归法求中缀表达式的值,O(n^2) int calc(int l, int r) { // 寻找未被任何括号包含的最后一个加减号 for (int i = r, j = 0; i >= ...

  3. 快放弃你的管家软件吧! Part 2 强制删除

    在Windows系统中,难免会遇到用常规方法无法删除文件的情况. 经常有遇到过一些情况? 软件卸载了,有些文件夹就是删不掉,提示被占用,mmp,这时候你肯定想到了360文件粉碎机! mmp,我就删个文 ...

  4. 数学--数论--HDU - 6322 打表找规律

    In number theory, Euler's totient function φ(n) counts the positive integers up to a given integer n ...

  5. centos7 安装高版本svn

    一.安装高版本svn 1.创建一个新的yum库文件,vim /etc/yum.repos.d/wandisco-svn.repo 内容如下 [WandiscoSVN] name=Wandisco SV ...

  6. php扩展开发之hello world

    最近在公司做的事情就是php扩展开发,虽然我只负责c++代码的编写,但是了解扩展开发的流程还是很有必要的. (本文介绍的是动态扩展,对静态扩展有兴趣的读者可自行google) php扩展开发环境搭建可 ...

  7. 正方形已知两点对角线求另外两点(POJ2002)

    至于为什么,上图.转载于MZW_BG 枚举正方形的一条边,此时有上正方形和下正方形. 最后正方形个数/4,因为每个正方形被枚举了4条边 #include <bits/stdc++.h> u ...

  8. python工业互联网应用实战1—SQL与ORM

    从sql到ORM应该说也是编程体系逐步演化的结果,通过类和对象更好的组织开个过程中遇到的各种业务问题,面向对象的解耦和内聚作为一套有效的方法论,对于复杂的企业应用而言确实能够解决实践过程中很多问题. ...

  9. [hihoCoder1231 2015BeijingOnline]求圆与多边形公共部分的周长

    题意:如题 思路:离散.将所有交点求出来,相当于将多变形的边切成了很多条元边,对每条元边,有两种情况 在圆内,答案加上此边长 在圆外,答案加上此边相对于圆心的"有向转弧" #inc ...

  10. [hdu2222]ac自动机(模板)

    题意:一个文本串+多个模板串的匹配问题 思路:裸的ac自动机. #pragma comment(linker, "/STACK:10240000,10240000") #inclu ...