在千锋学习的第25天。
今天学习了集合中Set和Map,主要掌握HashSet 和HashMap
熟悉主要的方法 这两的特点是无序,无下标,集合元素不可重复
package com.lichen.ti;
import java.util.*;
public class TestListset {
public static void main(String[] args) {
List <String> list =new ArrayList <String>();
list.add("Hello");
list.add("Lean");
list.add("Hello");
list.add("Welcome");
Set<String> set =new HashSet<String>();
set.addAll(list);
System.out.println(set.size());
}
}
输出 编译正常,输出三
package com.lichen.ti;
import java.util.*;
public class TestWorker {
public static void main(String[] args) {
Set<Worker> set =new HashSet<Worker>();
set.add(new Worker("tom",18,2000));
set.add(new Worker("tom",18,2000));
set.add(0,new Worker("jerry",18,2000));
System.out.println(set.size());
for (Worker w : set) {
System.out.println(w.toString());
}
}
}
class Worker1{
String name;
int age ;
double salary;
public Worker(){}
public Worker(String name, int age, double salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
}
, int hashCode(){
System.out.println("运行了");
return name.hashCode()+age +salary;
public boolean equals(Worker w){
if(this.name==w.name&&this.age==w.age&&this.salary==w.salary){
return true ;
}else{
return false ;
}
/*if(w.name ==name&&w.salary==salary&&w.age==age){
return true ;
}else{
return false;
}*/
}
}
set。add 无下标 所以不能有0
hashCode 应该有公共类public修饰
return 返回时应该强转int
package com.lichen.ti;
import java.util.HashSet;
import java.util.Set;
public class TestWorker1 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Set<Worker> set =new HashSet<Worker>();
set.add(new Worker("tom",18,2000.0));
set.add(new Worker("tom",18,2000.0));
set.add(new Worker("jerry",18,2000.0));
for (Worker w : set) {
System.out.println(w.toString());
}
}
}
class Worker{
String name;
int age ;
double salary;
public Worker(){}
public Worker(String name, int age, double salary) {
super();
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
}
public int hashCode(){
System.out.println("运行了");
//return (int) (name.hashCode()+age +salary);
return (int)(this.name.hashCode()+this.age+this.salary);
}
public boolean equals(Object w){
if(this==w){
return true;
}
if(w ==null){
return false;
}
if(this.getClass()!=w.getClass()){
return false;
}
Worker wo =(Worker)w;
if(this.name.equals(wo.name)&&this.age==wo.age&&this.salary==w.salary){
return true ;
}else{
return false ;
}
/*if(w.name ==name&&w.salary==salary&&w.age==age){
return true ;
}else{
return false;
}*/
}
}
(Map)关于Map常见的方法
1 put方法表示放入一个键值时如果键已存在则覆盖,如果键不存在则插入放入
2 remove 方法接受一个参数,表示删除键所对应的数据和键
3,get方法表示获取键对应的数据 get方法的参数表示键 返回值表示 键所对应的数据
4要想获得Map中的所有键应该使用方法keySet() 该方法的返回值类型为 Set
5 要想获得Map中所有的值,应该使用方法entrySet 该方法返回值类型为Ste
利用MAP 完成下面的功能
从命令行读入一个字符串,表示一个年份,输出该年的世界杯冠军是哪只球队,如果该年没有举办世界杯,则输出没有举办世界杯
package com.lichen.ti;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class TestHashMap1 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
Map<String,String> map =new HashMap<String,String>();
map.put("1903", "乌拉圭");
map.put("1934", "意大利");
map.put("1938", "意大利");
map.put("1950", "乌拉圭");
map.put("1954", "巴西");
map.put("1958", "巴西");
map.put("1962", "巴西");
map.put("1966", "英格兰");
map.put("1970", "巴西");
map.put("1974", "德国");
map.put("1978", "阿根廷");
map.put("1982", "意大利");
map.put("1986", "阿根廷");
System.out.println("请输入年份");
String str =input.next();
if(map.get(str)!=null){
System.out.println(str+"年获得的冠军为"+map.get(str));
}else{
System.out.println("没有夺冠的");
}
question 10-11
package com.lichen.ti;
import java.util.HashMap;
import java.util.Map;
public class TestMap2 {
public static void main(String[] args) {
Map<String,String> map =new HashMap<String,String>();
map.put("Tom", "CoreJave");
map.put("John", "Oracl");
map.put("Susan", "Oracl");
map.put("Jerry", "JDBC");
map.put("Jim", "Unix");
map.put("Kevin", "Jsp");
map.put("Lucy", "Jsp");
map.put("Allen", "JDBC");
map.put("Lucy","JDBC");
for (String string : map.keySet()) {
System.out.println(string +"老师授课为"+map.get(string));
}
for (String str : map.keySet()) {
if(map.get(str).equals("Jsp")){
System.out.println("教Jsp的老师为"+str);
}
}
}
}
package com.lichen.ti;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class TestHashMap1 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
Map<String,String> map =new HashMap<String,String>();
map.put("1903", "乌拉圭");
map.put("1934", "意大利");
map.put("1938", "意大利");
map.put("1950", "乌拉圭");
map.put("1954", "巴西");
map.put("1958", "巴西");
map.put("1962", "巴西");
map.put("1966", "英格兰");
map.put("1970", "巴西");
map.put("1974", "德国");
map.put("1978", "阿根廷");
map.put("1982", "意大利");
map.put("1986", "阿根廷");
System.out.println("请输入年份");
String str =input.next();
if(map.get(str)!=null){
System.out.println(str+"年获得的冠军为"+map.get(str));
}else{
System.out.println("没有夺冠的");
}
System.out.println("请输出国家的名字");
String str2 =input.next();
Map<String,String> map2 =new HashMap<String,String>();
for (String string : map.keySet()) {
if(map.get(string).equals(str2)){
map2.put(string, str2);
}
if(map.isEmpty()){
System.out.println(str2+"没有夺冠的");
}else{
System.out.println(str2+"夺冠的年份为"+map2.keySet());
}
}
}
}
package com.lichen.ti;
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
public class TestMap3 {
public static void main(String[] args) {
Scanner input =new Scanner(System.in);
System.out.println("请输入字符串");
String str =input.next();
Map<Character ,Integer> map =new HashMap<Character,Integer>();
for(int i =0;i<str.length();i++){
Character ch= str.charAt(i);
if(map.get(ch)==null){
map.put(ch, 1);
}else{
int in =map.get(ch);
map.put(ch, in+1);
}
}
System.out.println(map.entrySet());
}
}