#千峰逆战班,张国静#

在千峰学习第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();
	 }
}
发布了12 篇原创文章 · 获赞 0 · 访问量 263

猜你喜欢

转载自blog.csdn.net/ZhangXiao_L/article/details/104719757