面向对象技术书面作业5 (集合类 异常处理)
1.Collection 、List、 Set、 Map接口的而联系和区别有哪些?
2.遍历遍历集合框架Arraylist的方法有哪些?
3.遍历集合框架 HashSet的方法有哪些?
4.遍历集合框架 HashMap的方法有哪些?
5.什么是泛型?为什么要引入泛型集合?
6.举一个例子说明如何在方法中声明和抛出异常?
7.如何自定义异常?请自定义一个异常类,用于当三角形的三条边有负值或不能构成三角形时的进行异常处理。
**
1. Collection 、List、 Set、 Map接口的而联系和区别有哪些?
Collection接口是List接口和Set接口的父接口
Map也是一个接口
Collection接口是可迭代的
List集合中的元素:有序可以重复
Set集合:无序不可以重复
Map:以 key:value的键值对方式存储元素
2.遍历遍历集合框架Arraylist的方法有哪些?
三种方式
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
//遍历ArrayList的三种方式
public class ArrayListTest {
public static void main(String[] args) {
//创建ArrayList集合
List arrayList = new ArrayList();
//向集合中添加元素
arrayList.add("钢铁侠");
arrayList.add("美国队长");
arrayList.add("蜘蛛侠");
arrayList.add("雷神");
arrayList.add("奇异博士");
//第一种遍历方法,迭代器迭代
Iterator iterator = arrayList.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//第二种遍历方法,增强for循环:for each
for(Object o : arrayList){
System.out.println(o);
}
//第三种方式,利用下标
for (int i = 0; i <arrayList.size() ; i++) {
System.out.println(arrayList.get(i));
}
}
}
3.遍历集合框架 HashSet的方法有哪些?
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
//遍历HashSet
public class HashSetTest {
public static void main(String[] args) {
//先创建一个HashSet集合
Set hashSet =new HashSet();
//往集合中添加元素
hashSet.add("钢铁侠");
hashSet.add("美国队长");
hashSet.add("雷神");
hashSet.add("蜘蛛侠");
hashSet.add("奇异博士");
//第一种方式,迭代器迭代
Iterator iterator = hashSet.iterator();
while(iterator.hasNext()){
System.out.println(iterator.next());
}
//第二种方式,for each 循环
for(Object o:hashSet){
System.out.println(o);
}
}
}
**4.遍历集合框架 HashMap的方法有哪些?**
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapTest {
public static void main(String[] args) {
//创建HashMap集合
Map<Integer,String> hashMap = new HashMap<>();
//向Map集合中添加元素
hashMap.put(1,"钢铁侠");
hashMap.put(2,"美国队长");
hashMap.put(3,"雷神");
hashMap.put(4,"奇异博士");
hashMap.put(5,"蜘蛛侠");
//遍历map集合,遍历Map集合有两种方法,第一种,遍历所有的key去获取value
//获取包含key的所有集合
Set<Integer> set = hashMap.keySet();
//可以使用迭代器迭代
Iterator<Integer> iterator = set.iterator();
while (iterator.hasNext()){
Integer i = iterator.next();
String s = hashMap.get(i);
System.out.println(s);
}
//也可以使用for each循环
for (Object o:set){
System.out.println(hashMap.get(o));
}
//第二种方式
//Set<Map.Entry<K,V>> entrySet() 将Map集合转化成Set集合
//Set集合中元素的类型是: Map.Entry
Set<Map.Entry<Integer,String>> s = hashMap.entrySet();
//迭代器迭代
Iterator<Map.Entry<Integer,String>> iterator1 = s.iterator();
while(iterator1.hasNext()){
Map.Entry<Integer,String> entry = iterator1.next();
Integer key = entry.getKey();
String value = entry.getValue();
System.out.println("key == " + key + " value == " + value);
}
}
}
5.什么是泛型?为什么要引入泛型集合?
泛型是JDK5.0的新特性,可以使一个集合类中所有的元素类型统一
从集合中取出的元素是泛型指定的类型,不需要进行大量的“向下转型”
6.举一个例子说明如何在方法中声明和抛出异常?
声明异常throws
抛出异常throw
import java.io.FileNotFoundException;
//6.举一个例子说明如何在方法中声明和抛出异常?
//throws声明异常、throw抛出异常
public class ExceptionTest {
//声明异常
public static void main(String[] args) throws FileNotFoundException {
doSome();
}
public static void doSome() throws FileNotFoundException {
System.out.println("doSome begin...");
//声明异常
throw new FileNotFoundException("文件找不到");
}
}
7.如何自定义异常?请自定义一个异常类,用于当三角形的三条边有负值或不能构成三角形时的进行异常处理。
public class MyException extends Exception{
//无参构造
public MyException() {
}
//有参构造
public MyException(String message) {
super(message);
}
}
public class Triangle {
//三条边
private double line1;
private double line2;
private double line3;
//构造方法
public Triangle() {
}
//请自定义一个异常类,用于当三角形的三条边有负值或不能构成三角形时的进行异常处理
public Triangle(double line1, double line2, double line3) throws MyException {
if (line1 <0 ||line2 <0 ||line3 < 0){
throw new MyException("三角形的边不能小于零");
}
double[] lines = {line1,line2,line3};
if (lines[0] > lines[1] + lines[2] || lines[2] < lines[0] - lines[1]){
throw new MyException("不符合三角形的三边法则");
}
this.line1 = line1;
this.line2 = line2;
this.line3 = line3;
}
}
public class TriangleTest {
public static void main(String[] args) {
try {
//Triangle triangle =new Triangle(3,4,10);
// Triangle triangle =new Triangle(-1,2,3);
Triangle triangle =new Triangle(2,3,4);
} catch (MyException e) {
e.printStackTrace();
}
}
}