java作业

A:简答题
1、请把我们讲解过的所有类中的方法在API中找到,并使用自己的话进行描述
Map
public V put(K key, V value):添加键和值 
public void clear(): 删除该Map中的键和值
public V remove(Object key): 如果存在这个键,则删除对应的值
public boolean containsKey(Object key): 判断是否包含 这个键
public boolean containsValue(Object value):判断是否包含这个值
 public boolean isEmpty(): 判断该Map是否为空
public Set<Map.Entry<K,V>> entrySet():利用entrySet进行遍历
public V get(Object key): 获取键
public Set<K> keySet() : 获取值
public Collection<V> values():Collection集合
public int size(): 该集合的长度
Collections
public static <T> void sort(List<T> list) :进行排序 
public static <T> int binarySearch(List<?> list,T key)使用二分搜索法搜索指定列表,以获得指定对象。
public static <T> T max(Collection<?> coll) 据元素的自然顺序,返回给定 collection 的最大元素。
public static void reverse(List<?> list) 反转指定列表中元素的顺序
public static void shuffle(List<?> list) 使用默认随机源对指定列表进行置换。
public static <T> void sort(List<T> list) : 根据自然排序进行升序排序
public static <T> void sort(List<T> list, Comparator<T> c)根据比较器进行产生的顺序进行排序
 
2、请说明Map接口和Collection接口的区别 
(1)Collection集合只能存储单列元素,Map可以存储双列集合。
(2)Collection集合添加元素用的add();Map集合使用的是put();
 (3)Collection集合遍历元素直接用增强for循环,而Map集合用的是keySet或者entrySet.
(4)Map里面有HashMap和treeMap以及LinkedHashMap
 HashMap特点无序唯一,唯一由哈希表实现;
 treeMap特点唯一且可以排序,数据结构是红黑树结构。
   LinkedHashMap特点有序且唯一,底层数据结构是链表和哈希表,由链表实现有序,哈希表提供唯一性。


3、请写出Map集合的遍历方式 keySet()和entrySet()
4、请说明HashMap和Hashtable的区别
HashMap可以接收null值和null键,Hashtable不可以
HashMap线程不安全效率高
Hashtable 线程安全效率低


5、请解释Collection与Collections的区别
Collection是集合接口,Collections是包装类
B:看程序写结果(写出自己的分析理由),程序填空,改错,看程序写结果。
class Car {
private String brand;//品牌
private int year; //制造年份
public Car () {}
public Car (String brand, int year) {
this.brand = brand;
this.year = year;
}
public void setBrand(String brand) {
this.brand = brand;
}
public String getBrand(){
return brand;
}
public void setYear(int year) {
this.year = year;
}
public int getYear(){
return year;
}
}
1、给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class Test {
public static void main(String[] args) {
HashMap<Integer, String> hm = new HashMap<Integer, String>();
hm.put(new Integer(23), "Jim");
hm.put(new Integer(23), "Kevin");
Set<Integer> keys = hm.keySet();
for (Integer key : keys) {
String value = hm.get(key);
System.out.println( value );
}
}
}
输出Kevin,Jim被覆盖


2、给出以下代码,已定义好Car类,请问该程序的运行结果是什么?如有问题,请说明原因。
class Test {
public static void main(String[] args) {
HashMap<Car, String> hm = new HashMap<Car, String>();
hm.put(new Car("宝马x5", 2014), "Jim");
hm.put(new Car("宝马x5", 2014), "Kevin");
Set<Car> cars = hm.keySet();
for (Car car : cars) {
String value = hm.get(car);
System.out.println(value);
}
}
}
Jim
Kevin
 没有重写hashcode()和equals()方法
3、给出以下代码,请问该程序的运行结果是什么?如有问题,请说明原因。
class Test {
public static void main(String[] args) {
TreeMap<Integer, String> tm = new TreeMap<Integer, String>();
tm.put(new Integer(11), "Tom");
tm.put(new Integer(45), "David");
tm.put(new Integer(23), "Jim");
tm.put(new Integer(23), "Kevin");


Set<Integer> keys = tm.keySet();
for (Integer key : keys) {
String value = tm.get(key);
System.out.println( key +"--"+value );
}
}
}
11--Tom 23--Kevin 45--David 
Treemap对键进行自然排序,kevin替代了jim


4、给出以下代码,已定义好Car类,请问该程序的运行结果是什么?如有问题,请说明原因。
class Test {
public static void main(String[] args) {
TreeMap<Car, String> tm = new TreeMap<Car, String>(
new Comparator<Car>() {
@Override
public int compare(Car c1, Car c2) {
int num1 = c1.getYear() - c2.getYear();
int num2 = (num1 == 0) ? (c1.getBrand().compareTo(c2
.getBrand())) : num1;
return num2;
}
});
tm.put(new Car("宝马X5", 2014), "Tom");
tm.put(new Car("宝马X5", 2014), "David");
tm.put(new Car("奥迪Q7", 2014), "Jim");
tm.put(new Car("奥迪A4L", 2014), "Kevin");
Set<Car> cars = tm.keySet();
for (Car car : cars) {
String value = tm.get(car);
System.out.println(car.getBrand() + "--" + car.getYear() + "--"
+ value);
}
}
}
奥迪A4L--2014--Kevin 
奥迪Q7--2014--Jim 
宝马X5--2014--David 
实现了comparator接口


C:编程题
请编写程序,统计一个字符串中每个字符出现的次数
package wbb;
import java.util.HashMap;
import java.util.Scanner;
import java.util.Set;


public class test12 {

public static void main(String[] args) {

HashMap<Character, Integer> map = new HashMap<Character, Integer>();

Scanner sc = new Scanner(System.in);
System.out.println("请随便输入一串字母");
String str = sc.nextLine();

char[] chs = str.toCharArray();

for (char key : chs) {

Integer value = map.get(key);
if (value == null) {
map.put(key, 1);


} else {
value++;
map.put(key, value);
}


}



Set<Character> keySet = map.keySet();
StringBuilder sb = new StringBuilder();
for (Character ch : keySet) {
sb.append(ch).append("(").append(map.get(ch)).append(")");


}
System.out.println(sb.toString());


}
}


1、请编写程序,存储自定义对象到HashMap集合中,并采用两种方式遍历
package wbb;


import java.util.Collection;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;


public class test6 {



public static void main(String[] args) {
HashMap<String, String> hm = new HashMap<String,String>();
hm.put("王昭君", "李白");
hm.put("紫霞仙子", "至尊宝");
Set<String> keySet = hm.keySet();
for(String key :keySet){

System.out.println(key+"...."+hm.get(key));
System.out.println("........");
Set<Entry<String, String>> entrySet = hm.entrySet();
for( Entry<String, String> key2: entrySet){
System.out.println(key2);
}
}
}
}


3、请编写程序,存储自定义对象到TreeMap集合中,并采用两种方式遍历
package wbb;


import java.util.Set;
import java.util.TreeMap;


class test2 {
public static void main(String[] args) {
TreeMap<Integer, String> tm = new TreeMap<Integer,String>();
tm.put(1, "梨");
tm.put(3,"苹果");
tm.put(2, "香蕉");
Set<Integer> keySet = tm.keySet();
for(Integer key: keySet){
System.out.println(key+"..."+tm.get(key));



}


}


4、请编写程序,完成集合嵌套,并遍历
jc 基础班
张三 20
李四 22
jy 就业班
王五 21
赵六 23
HashMap嵌套HashMap
import java.util.HashMap;
import java.util.Set;


public class test13 {


public static void main(String[] args) {




HashMap<String, Integer> jcMap = new HashMap<String, Integer>();
jcMap.put("张三", 20);
jcMap.put("李四", 22);
HashMap<String, Integer> jyMap = new HashMap<String, Integer>();
jyMap.put("王五", 21);
jyMap.put("赵六", 23);



HashMap<String, HashMap<String, Integer>> bigMap = new HashMap<String, HashMap<String, Integer>>();


bigMap.put("基础班", jcMap);
bigMap.put("就业班", jyMap);



Set<String> keySet = bigMap.keySet();
for (String bigkey : keySet) {
System.out.println(bigkey);

HashMap<String, Integer> hashMap = bigMap.get(bigkey);
Set<String> minSet = hashMap.keySet();


for (String minkey : minSet) {
System.out.println("\t" + minkey + "---" + hashMap.get(minkey));
}


System.out.println();


}
HashMap嵌套ArrayList
5、请编写程序,完成模拟斗地主案例
package wbb;




import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.TreeSet;


public class test12 {


public static void main(String[] args) {

HashMap<Integer, String> pokerMap = new HashMap<Integer, String>();

String[] colors = { "?", "?", "?", "◆" };

String[] nums = { "A", "2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K" };

ArrayList<Integer> indexs = new ArrayList<Integer>();
int index = 0;
for (String num : nums) {


for (String color : colors) {


pokerMap.put(index, num + color);
indexs.add(index);
index++;


}


}



indexs.add(index);
pokerMap.put(index, "大王");
index++;
indexs.add(index);
pokerMap.put(index, "小王");


Collections.shuffle(indexs);
Collections.shuffle(indexs);
Collections.shuffle(indexs);



TreeSet<Integer> zs = new TreeSet<Integer>();
TreeSet<Integer> zs1 = new TreeSet<Integer>();
TreeSet<Integer> sw = new TreeSet<Integer>();
TreeSet<Integer> dp= new TreeSet<Integer>();


for (int i = 0; i < indexs.size(); i++) {
if (i >= pokerMap.size() - 3) {

dp.add(indexs.get(i));
}
if (i % 3 == 0) {
zs.add(indexs.get(i));


} else if (i % 3 == 1) {
zs1.add(indexs.get(i));


} else if (i % 3 == 2) {
sw.add(indexs.get(i));
}


}


// 看牌


lookPai("张三", zs, pokerMap);
lookPai("赵四",zs1, pokerMap);
lookPai("孙五", sw, pokerMap);
lookPai("底牌", dp, pokerMap);


}


private static void lookPai(String name, TreeSet<Integer> list,
HashMap<Integer, String> pokerMap) {
System.out.println(name);

for (Integer in : list) {


String pai = pokerMap.get(in);
System.out.print(pai + " ");


}
System.out.println();


}


}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
用来完成大作业的。文档内容: 1 Java技术体系 1.1 Java语言 1.2 Java平台 1.3 Java应用领域 2 Java语言的技术特点 2.1 1 2.2 2 2.3 3 3 Java语言与C++的异同分析总结。 4 选用C和java语言时编程算法程序有什么不同,有什么优势和劣势。 5 自己编程学习的级别和状态。以及自己以后的编程学习的计划和想法。 6 下面3道题目中选一道,给出算法分析和程序。 1)“黄金分割数”在我们的生活中很常见,但是在不同的应用领域,要求的精度也不一样。 例如:三位小数是0.618 现在我们需要你能求出保留100位小数的黄金分割数,采用的算法为“分层计算法”: 黄金数= 1 --------------- 1+ 1 ------------- 1+ 1 ----------- 1+ 1 --------- ..... 注意,计算出的结果,如果第100位为0也需要保留。 2)已知一个数列: 5,2,4,3,7,6 那么,在这个数列中存在这样一些“连续数”,例如:5,2,4,3这个子数列排序后是连续的。同样2,4,3也是连续的,为了方便表示 我们使用下标来标识,这样,这个数列中存在以下“连续数”: [1,1] [1,4] [1,6] [2,2] [2,4] [3,3] [3,4] [4,4] [5,5] [5,6] [6,6] 这样,他就存在11个“连续数”。现在需要你在用户找出一个数组中所有的“连续数”。 要求: 1、用户输入一个整数N,表示下面数组的个数 2、用户每输入一行作为一个数组 如: 用户输入: 1 5,2,4,3,7,6 程序输出: 11 3)有一种数我们称之为幸运数,它的特点是这样的,首先,由自然数按顺序排列: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 … 这样,1比较特殊, 1为第一个幸运数,那么,我们移除掉序号能被2整除的数(注意:是序号,而不是数本身,每次移除后都重新排序)就剩下: 1 3 5 7 9 11 13 15 17 19… 3为第二个幸运数,那么我们需要去掉序号能被3(下一次是除4,然后是5,每次加1)整除的数,5 11 17...剩下: 1 3 7 9 13 15 19… 那么7为第三个幸运数,后面的幸运数,依此类推,移除之后剩下的数字都是幸运数。 现在我们需要你求出给定的m和n之间的幸运数的个数: 例如:给定1 20,那么个数为:5(5个幸运数分别是1,3,7,13,19) 现在要求用户输入两个数m和n(m<n<=1000*1000),输出幸运数的个数。 例如: 用户输入: 1 20 程序输出: 5 格式:小四,1.5倍行距

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值