1.1. 训练描述:【HashSet类】
一、 需求说明:自定义一个学生类,给出成员变量name和age,使用HashSet集合存储自定义对象并遍历,遍历集合的时候,在控制台输出学生对象的成员变量值。要求使用两种方式进行遍历(迭代器、增强for)
二、 当上述内容解决完毕以后,如果集合中存储的学生对象,年龄和姓名都相同,认为是同一个人,就不存储在集合中,该如何做呢。
1.2. 操作步骤描述
public class Student {
String name ;
int age ;
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 Student(String name, int age) {
super();
this.name = name;
this.age = age;
}
public Student() {
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + age;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
import java.util.HashSet;
import java.util.Set;
public class Main01 {
public static void main(String[] args) {
Set<Student> set = new HashSet<Student>();
Student s1 = new Student("小明",25);
Student s2 = new Student("大华",28);
Student s3 = new Student("红红",20);
Student s4 = new Student("红红",20);
set.add(s1);
set.add(s2);
set.add(s3);
set.add(s4);
for(Student s : set){
System.out.println(s.getName()+",年龄"+s.getAge());
}
}
}
/*红红,年龄20
大华,年龄28
小明,年龄25*/
2.1. 训练描述:【HashMap】
三、 需求说明:自定义一个学生类,给出成员变量name和age,创建HashMap集合键是String,代表学号,值是自定义学生对象,代表每一个学生,给集合中添加一些元素,并使用两种方式遍历HashMap集合。
2.2. 操作步骤描述
//学生类同上
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Main02 {
public static void main(String[] args) {
Student s1 = new Student("小明",25);
Student s2 = new Student("大华",28);
Student s3 = new Student("红红",20);
Student s4 = new Student("红红",21);
Map<String,Student> map = new HashMap<String,Student>();
map.put("001", s1);
map.put("002", s2);
map.put("003", s3);
map.put("004", s4);
Set<String> set = map.keySet();
for(String key : set){
Student value = map.get(key);
System.out.println(key+" "+value.getName()+" "+value.getAge());
}
System.out.println("***************************************************");
Set<Map.Entry<String, Student>> sete = map.entrySet();
for(Map.Entry<String, Student> ss : sete){
String k = ss.getKey();
Student v = ss.getValue();
System.out.println(k+" "+v.getName()+" "+v.getAge());
}
}
}
/*001 小明 25
002 大华 28
003 红红 20
004 红红 21
***************************************************
001 小明 25
002 大华 28
003 红红 20
004 红红 21*/
3.1. 训练描述:【HashMap】
一、 需求说明:自定义一个学生类,给出成员变量name和age,创建HashMap集合键是自定义学生对象,代表每一个学生,值是String,代表学生地址,给集合中添加一些元素,并使用两种方式遍历HashMap集合。如果学生对象的成员变量值相同,就说明是同一个键。
3.2. 操作步骤描述
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import day12.test02.Student;
public class Main03 {
public static void main(String[] args) {
Student s1 = new Student("小明",25);
Student s2 = new Student("大华",28);
Student s3 = new Student("红红",20);
Student s4 = new Student("火火",21);
Map<String,Student> map = new HashMap();
map.put("001", s1);
map.put("002", s2);
map.put("003", s3);
map.put("003", s4);
Set<String> kset = map.keySet();
for(String k :kset){
Student v = map.get(k);
System.out.println(k +" "+v.getName()+" "+v.getAge());
}
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^");
Set<Map.Entry<String, Student>> meset = map.entrySet();
for(Map.Entry<String, Student> me : meset){
System.out.println(me.getKey()+" "+me.getValue().getName()+" "+me.getValue().getAge());
}
}
}
/*001 小明 25
002 大华 28
003 火火 21
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
001 小明 25
002 大华 28
003 火火 21*/
4.1. 训练描述:【ArrayList类、HashMap】
一、 需求说明:ArrayList集合嵌套HashMap集合并遍历。
定义一个ArrayList集合,它包含三个元素,每一个元素都是HashMap类型的。每一个HashMap集合的键和值都是String类型的,
键:String 丈夫的姓名
值:String 妻子的姓名
给出如下的字符串数据,请用代码实现需求。
第一个HashMap集合的元素:
孙策 大乔
周瑜 小乔
第二个HashMap集合的元素:
郭靖 黄蓉
杨过 小龙女
第三个HashMap集合的元素:
令狐冲 任盈盈
林平之 岳灵珊
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class Main04 {
public static void main(String[] args) {
Map<String ,String> map1 = new HashMap();
map1.put("孙策", "大乔");
map1.put("周瑜", "小乔");
Map<String ,String> map2 = new HashMap();
map2.put("郭靖", "黄蓉");
map2.put("杨过", "小龙女");
Map<String ,String> map3 = new HashMap();
map3.put("令狐冲", "任盈盈");
map3.put("林平之", "岳灵珊");
ArrayList<Map> list = new ArrayList<Map>();
list.add(map1);
list.add(map2);
list.add(map3);
for (int i = 0; i < list.size(); i++) {
Map<String, String> map = list.get(i);
Set<String> kset = map.keySet();
for(String k : kset){
String v = map.get(k);
System.out.println(k+" "+v);
}
System.out.println("****************************************");
}
}
}
孙策 大乔
周瑜 小乔
****************************************
杨过 小龙女
郭靖 黄蓉
****************************************
令狐冲 任盈盈
林平之 岳灵珊
****************************************
5.1. 训练描述:【ArrayList类、HashMap】
二、 需求说明:HashMap集合嵌套ArrayList集合并遍历。
定义一个HashMap集合,它包含三个元素,每一个元素的键是String类型,值是ArrayList类型。
键:String 人物来自哪部电视剧
值:ArrayList 人物的名称
每一个ArrayList集合的数据是String类型的。
给出如下的字符串数据,请用代码实现需求。
第一个ArrayList集合的元素:(三国演义)
诸葛亮
赵云
第二个ArrayList集合的元素:(西游记)
唐僧
孙悟空
第三个ArrayList集合的元素:(水浒传)
武松
鲁智深
public class Main05 {
public static void main(String[] args) {
ArrayList<String> list01 = new ArrayList<String>();
ArrayList<String> list02 = new ArrayList<String>();
ArrayList<String> list03 = new ArrayList<String>();
list01.add("诸葛亮");
list01.add("赵云");
list02.add("唐僧");
list02.add("孙悟空");
list03.add("武松");
list03.add("鲁智深");
Map<String,ArrayList> map = new HashMap();
map.put("三国演义", list01);
map.put("西游记", list02);
map.put("水浒传", list03);
Set<String> keyset = map.keySet();
for(String k :keyset){
ArrayList v = map.get(k);
System.out.println(k+":");
for (int i = 0; i < v.size(); i++) {
System.out.println(v.get(i));
}
System.out.println();
}
}
}
/*水浒传:
武松
鲁智深
三国演义:
诸葛亮
赵云
西游记:
唐僧
孙悟空*/
1.1. 训练描述:
一、 分析以下需求,并用代码实现:
import java.util.ArrayList;
public class Tz01 {
public static void main(String[] args) {
Integer[] a = {2,1,1,4,5,5,6,9,8,9};
ArrayList<Integer> set = new ArrayList<Integer>();
for (int i = 0; i < a.length; i++) {
if(set.contains(a[i])){
System.out.println("已经包含"+a[i]+",跳过");
}else{
set.add(a[i]);
}
}
for(Integer i :set){
System.out.print(i+" ");
}
}
}
/*已经包含1,跳过
已经包含5,跳过
已经包含9,跳过
2 1 4 5 6 9 8 */
2.1. 训练描述:
一、 需求分析:键盘读取一行输入,去掉其中重复字符, 打印出不同的那些字符
2.2. 操作步骤描述
import java.util.ArrayList;
import java.util.Scanner;
public class Tz02 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一串字符:");
String s = input.next();
ArrayList<Character> arr = new ArrayList<Character>();
//System.out.println(s.charAt(0));
for (int i = 0; i < s.length(); i++) {
if (arr.contains(s.charAt(i))){
System.out.println("已经包含元素"+s.charAt(i)+",跳过");
}else{
arr.add(s.charAt(i));
}
}
System.out.println();
for(Character i : arr){
System.out.print(i+" ");
}
}
}
/*请输入一串字符:
assddffg
已经包含元素s,跳过
已经包含元素d,跳过
已经包含元素f,跳过
a s d f g */
3.1. 训练描述:
一、 分析以下需求,并用代码实现
import java.util.ArrayList;
import java.util.Random;
public class Tz03 {
public static void main(String[] args) {
Random r = new Random();
ArrayList<Integer> arr = new ArrayList<Integer>();
int i = 0;
while(i<10){
int a = r.nextInt(20)+1;
System.out.println(a);
if(!arr.contains(a)){
arr.add(a);
i++;
}
}
System.out.println();
for(int k: arr){
System.out.print(k+" ");
}
}
}
4.1. 训练描述:
一、 分析以下需求,并用代码实现
4.2. 操作步骤描述
public class TZ04 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串:");
String s = input.next();
Map<Character,Integer> map = new HashMap<Character,Integer>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if(map.containsKey(c)){
map.put(c, map.get(c)+1);
}else{
map.put(c, 1);
}
}
Set<Character> keyset = map.keySet();
for(char c:keyset){
int v = map.get(c);
System.out.println(c+"出现次数:"+v);
}
}
}
5.1. 训练描述:
一、 分析以下需求,并用代码实现
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
public class Tz05 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入字符串:");
String s = input.next();
Map<String,Integer> map = new HashMap<String,Integer>();
String[] str = s.split(" ");
System.out.println("分割次数:"+str.length);
for (int i = 0; i < str.length; i++) {
if(map.containsKey(str[i])){
map.put(str[i], map.get(str[i])+1);
}else{
map.put(str[i], 1);
}
}
Set<String> keyset = map.keySet();
for(String k : keyset){
int v = map.get(k);
System.out.println(k+"+"+v);
}
}
}