#千峰逆战班,张国静#
作者:互联网
在千峰学习第26天
学海无涯,吾辈自强,无远弗届,贵在坚持。”
中国加油,武汉加油,前锋加油,自己加油。
这周主要学习了包装类与Collection体系集合,通过今天一天的复盘进行了一下总结:
1、包装类JDK5之后,提供自动装箱、拆箱,很大程度简化了使用包装类的编程过程
2、Sting类型要牢记常用方法(17种常用方法)
3、其中可变字符串(用于拼接字符串JVM自动调用)
1)StringBuffer可变字符串 JDK1.0发布,运行效率慢,线程安全;
2)StringBuilder可变字符串 JDK1.5发布,运行效率快,线程不安全
3、Collection体系集合无序、无下标。
1)牢记常用方法
2)List接口的特点:有序、有下标、元素可重复。
实现类
(1)ArrayList(重点)//JDK7以前,无参构造直接创建长度为10的Object数组,不用与不用都创建,浪费空间。//JDK8之后,无参构造直接创建长度为0数组,不用不占用空间;当首次添加元素时,需要实际分配数组空间,执行数组扩容操作真正向数组中插入数据,(Lazy懒)用的时候再创建,或再加载,有效的降低无用内存的占用JDK1.2发布 运行效率快,线程不安全。数组结构实现,查询快,删减慢;
(2)VectorJDK1.0发布 运行效率慢,线程安全。数组结构实现,查询快,删减慢;
(3)LinkedList(链表结构存储,非线性)链表(链接列表)结构存储,查询慢、增删快。
3)Set接口的特点:无序、无下标、元素不可重复。
实现类
(1)HashSet(重点)元素不可重复。
(2)LinkedHashSet(了解)
(3)TreeSet(了解)
看了一天感觉浅显的理论知识是好掌握的,要牢牢记住工具方法,使用层面就没有问题,但源码方面看的话还是有些困难,还是需要时间不断积累,要做到万物皆对象,一切皆工具。还是需要继续加油努力。
#作业
4、C
6、B
7、
1)salary为浮点型要加强转
public int hashCode() {
return (int)(name.hashCode()+age+salary);
}
2)set没有下标去掉0
s.add(0,new Worker(18,"jerry",2000));
7-8、写代码证明HashSet不能存重复对象
public class Worker {
int age;
String name;
double salary;
public Worker() {}
public Worker(int age, String name, double salary) {
super();
this.age = age;
this.name = name;
this.salary = salary;
}
@Override
public int hashCode() {
return (int)(name.hashCode()+age+salary);
}
@Override
public boolean equals(Object obj) {
if (this==obj) {
return true;
}
if (obj==null) {
return false;
}
if (obj.getClass()!=this.getClass()) {
return false;
}
Worker w=(Worker)obj;
if(this.name.equals(w.name)&&
this.age==w.age&&this.salary==w.salary) {
return true;
}
return false;
}
}
import java.util.HashSet;
import java.util.Set;
public class TestWorker {
public static void main(String[] args) {
Set <Worker>s=new HashSet<Worker>();
s.add(new Worker(18,"tom",2000));
s.add(new Worker(18,"tom",2000));
s.add(new Worker(18,"jerry",2000));
System.out.println(s.size());
}
}
9、
put方法表示放入一个键值对,如果键已存在则覆盖原值,如果键不存在则存入值。
remove方法接受一个对象参数,表示删除该对象。
get方法表示取值,get方法的参数表示对象,返回值表示返回的对象
要想获得Map中所有键,应使用方法keyset(),该方法返回值为set集合
要想获得Map中所有值,应使用方法values(),该方法返回值为collection集合
10-13、(Map)输入年份输出该年拿世界杯队伍,输入球队,输出球队那世界杯年份
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class TestHashMap {
public static void main(String[] args) {
Map<Integer, String> hp=new HashMap<Integer, String>();
hp.put(1930, "乌拉圭");
hp.put(1934, "意大利");
hp.put(1938, "意大利");
hp.put(1950, "乌拉圭");
hp.put(1954, "德国");
hp.put(1958, "巴西");
hp.put(1962, "巴西");
hp.put(1966, "英格兰");
hp.put(1970, "巴西");
hp.put(1974, "德国");
hp.put(1978, "阿根廷");
hp.put(1982, "意大利");
hp.put(1986, "阿根廷");
hp.put(1990, "德国");
hp.put(1994, "巴西");
hp.put(1998, "法国");
hp.put(2002, "巴西");
hp.put(2006, "意大利");
System.out.println("请输入一个年份");
Scanner scan=new Scanner(System.in);
Integer year=scan.nextInt();
if (hp.get(year)!=null) {
System.out.println("世界杯冠军是"+hp.get(year)+"队");
}else {
System.out.println("没有举办世界杯");
}
System.out.println("请输入一个队伍");
String team=scan.next();
if (hp.values().contains(team)) {
for (Integer key : hp.keySet()) {
if (hp.get(key).equals(team)) {
System.out.println(key+"获得世界杯");
}
}
}else {
System.err.println("没有获得世界杯");
}
scan.close();
}
}
11、老师作为键课程作为值,完成Map一系类操作
import java.util.HashMap;
import java.util.Map;
public class TestHashMap {
public static void main(String[] args) {
Map<String , String > hp=new HashMap<String ,String >();
hp.put("Tom", "CoreJava");
hp.put("John", "Oracle");
hp.put("Susan", "Oracle");
hp.put("Jerry", "JDBC");
hp.put("Jim", "Unix");
hp.put("Kevin", "JSP");
hp.put("Lucy", "JSP");
hp.put("Allen", "JDBC");
hp.put("Lucy", "CoreJava");
for (String key : hp.keySet()) {
System.out.println(key+"\t"+hp.get(key));
}
for (String key : hp.keySet()) {
if (hp.get(key)=="JSP") {
System.out.println(key);
}
}
}
}
12、
B
14、(Map)输入一段字串,输出字符串那些字符组成,每个字符出现次数
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class TestHashMap {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
System.out.println("输入一段字符串");
String s=scan.next();
Map<Integer, Character> hp=new HashMap<Integer, Character>();
for (Integer i = 0; i < s.length(); i++) {
hp.put(i, s.charAt(i));
}
System.out.print("字符串由");
for (Integer key : hp.keySet()) {
System.out.print(hp.get(key));
System.out.print(",");
}
System.out.println("组成");
System.out.println("每个字符出现的次数为");
for (Integer key : hp.keySet()) {
System.out.print(hp.get(key));
System.out.print("出现");
int size=1;
for (int i = 0; i < s.length(); i++) {
if (hp.get(i).equals(hp.get(key))) {
if (i!=key) {
size++;
}
}
}
System.out.print(size);
System.out.println();
}
System.out.println("程序结束");
scan.close();
}
}
标签:hp,张国静,System,逆战班,key,put,千峰,public,out 来源: https://blog.csdn.net/ZhangXiao_L/article/details/104719757