Java字典,处理错误

Collections

作用:对集合操作的工具

常用方法:

              1.  static void sort(List<T>  list):排序

                        按照存储数据的hashCode值进行排序

Collections.sort(list);//对list进行排序

       

2.static void sort(List<T> list,Comparator<? super T> c):排序

                        按照指定的比较器进行排序

              3.  static void reverse(List<?> list):翻转

Collections.reverse(list);//对list进行反转

效果明显

          4.      static void shuffle(List<?> list):打乱


		Collections.shuffle(list);//对list打乱

运行一次乱一次

 

               5. static boolean addAll(Collection c,T.....elements)

                        作用:给集合添加多个

                        参数:c为集合,elements为添加的元素

                                 可以看到有返回值的,如果存入不正确就会错误

Collections.addAll(list, 7,7,5,56,4,54,6,56,456,45,6,4);//给list添加简单了
		

           

         

		list.add(12);
		list.add(11);
		list.add(1);
		list.add(4);
		list.add(78);

原来这样添加很麻烦

 6.   static void copy(List 前者,List 后者):拷贝

                        后者集合中的元素个数需要小于前集合

	System.out.println(list1);
		System.out.println(list);
		
		Collections.copy(list1, list);//后者的数据按顺序拷贝到前者,会覆盖前者
		
		System.out.println(list1);//所以前者的元素个数要大于等于后者

              7.  int binarySearch(List 查找的集合,T目标数组)查找

                        返回值:目标数据在集合中的位置,如果不存在返回-1

                        该方法使用二分查找,所以集合必须有序

        Collections.sort(list);//对list进行排序
		
		System.out.println(list);
		System.out.println(Collections.binarySearch(list, 8));//查找list集合中8的位置
		

由于使用二分查找,如果数据没有按顺序排列,非常可能寻找失误

                        

Map

简介

        字典,作用为存储一组数据类型相同的数据

        特点:按照键值对的方式存储

         键(key),值(vlue),一个键对应一个值,为一一对应关系,值可相同,键不能

要求

        键:不允许重复

        值:可以重复

Map体系

Map

        HashMap:

                特点:key不能重复,允许null作为键或值,线程不安全,jdk1.2出现

     

           Hashtable

                特点:key不能重复,不允许null作为键值或值,线程安全,jdk1.0出现

     

          TreeMap

                特点:键要么有比较性,要么有比较器

Map底层使用Set实现,Set底层使用Map实现


Map提供的方法

	HashMap<Integer, String> a1 = new HashMap<Integer, String>();//new一个叫a1的字典

1.增

        v put(k key,v value):将该键值对存储到字典中

	a1.put(2,"b");

        void pubAll(Map m):添加多个

	a1.putAll(a2);//a2加到a1

2.删

        v remove(Object key):删除该key所在的键值对

                返回值:删除的键值对中的值

System.out.println(	a1.remove(1));//在a1中删除key=1的键值对
		System.out.println(a1);

       

void clear();清空

a1.clear();

3.改

        v put(k key,v value)

                注意:如果字典中不存在该key,那么本次就是添加,有的话就是修改

4.查

        4.1int size();查询字典中储存的键值对的个数

a1.size();

     

4.2  boolean isEmpty();查询字典是否为空

a1.isEmpty();

4.3  boolean containskey(Object key):判断指定key是否存在

a1.containsKey(2);//键为2的是否存在

      4.4  boolean containsValue(Object value):判断指定的值是否存在

a1.containsValue("d");//值为d的是否存在

   4.5  V get(Object key):获取key对应的value

a1.get(1);

   4.6 Set<k> keySet():获取所有key的集合

System.out.println(a1.keySet());

    4.7    Collection values():获取所有值的集合


	Collection aCollection=a1.values();

       4.8 Set entrySet():获取所有键值对的集合

a1.entrySet();

        Entry:键值对

                提供方法

                        K getKey():获取该键值对的键

                        V getValue():获取该键值对的值

                        V setValue(V value):给该键值对修改值

		Iterator<Entry<Integer, String>> iterator = set.iterator();//获得键值对
		//搞个迭代器
		while(iterator.hasNext()) {//看下一个是否为空
			Entry<Integer, String> entry = iterator.next();
			//获取该entry中key的值
			Integer key = entry.getKey();
			//获取该entry中value的值
			String value = entry.getValue();
			System.out.println(key+"------"+value);
		}

		Set<Entry<Integer,String>> set = a1.entrySet();//获得所有键值对
		
		for (Entry<Integer, String> entry : set) {//获取每一对键值对
			Integer keyInteger=entry.getKey();//获得键
			String vaString=entry.getValue();//获得值
			System.out.println(keyInteger+"---"+vaString);
			
		}
		
		System.out.println();
		
		Iterator<Entry<Integer, String>> iterator = set.iterator();//获得所有键值对
		//搞个迭代器
		while(iterator.hasNext()) {//看下一个是否为空
			Entry<Integer, String> entry = iterator.next();//键值对提供的方法
			//获取该entry中key的值
			Integer key = entry.getKey();
			//获取该entry中value的值
			String value = entry.getValue();
			System.out.println(key+"------"+value);
		}
		
		System.out.println();
		
		Set<Integer> keySet = a1.keySet();//键值的所有集合
		for (Integer key : keySet) {
			String value = a1.get(key);
			System.out.println(key+"----"+value);//keyset
		}
		
		System.out.println();
		
		Iterator<Integer> iter=a1.keySet().iterator();//搞个键值的所有集合,搞出除它的迭代器
		while (iter.hasNext()) {
			
			Integer keyInteger=iter.next();//遍历键值
			String valiuString=a1.get(keyInteger);//通过键找值
			
			System.out.println(keyInteger+"---"+valiuString);
		}
		
		

Properties

特点:可将字典中数据存储在文件中,可以读取指定类型文件的数据到字典中

特有的方法:

void store(OutputStream out, String comments)
                作用:将字典中的数据存储到文件中
                参数:
        out:输出流,表示数据的存储位置
        comments:提交信息

        void load(InputStream inStream)
                作用:加载文件,时文件中的数据倒入到字典中
                        参数:inStream:输入流,表示读取的文件地址

String getProperty(String key)
        作用:通过key获取字典中存储对应的value,类似与Map的get方法
        优点:
                getProperty返回值是String类型的,get方法返回值是Key的泛型,而Properties并没有定义
                泛型,所以返回值为Object类型,需要手动转换为String
String getProperty(String key, String defaultValue)
                作用:通过key获取对应value
                        参数:key:键   defaultValue:默认值
                 如果取值时,字典中不存在该key,则返回默认值.如果存在该key,那么返回key对应的value

        

异常

异常分类

Throwable:所有错误的顶级接口

        Error:错误

                原因:因为硬件问题引起软件崩溃

            OutOfMemoryError:内存溢出异常,程序员可以通过对内存的优化,解决该问题.这个错误简称为OOM

         Exception:异常

                CheckedException:检查时异常

                        原因:代码未按照规定语法编写

                RuntimeException:运行时异常

                        原因:写的逻辑有问题

        异常会传递,出现异常后程序闪退,不会再继续向下执行

常见异常:

        空指针异常:NullPointerException

                原因:使用null调用了属性或方法

数组下标越界异常:IndexOutOfBoundsException

        原因:操作的下标不在集合下标的取值范围内

算法异常:ArithmeticException

        原因:代码中的数学运算不符合数学规律,比如被除数为0

 类型转换异常:ClassCastException

        原因:转换的对象并不是目标对象所属的类

                        数字格式异常:NumberFormatException

                           类不存在异常:ClassNotFoundException

异常处理:

1.修改代码

2,try catch
语法:
        try{
        有可能导致异常的代码
        }catch(异常种类1 变量名){
                //当try中的代码产生异常种类1的异常时,会执行此处代码
        }catch(异常种类2 变量名){
        //当try中的代码产生异常种类2的异常时,会执行此处代码
        }...
        finally {
                        必须要执行的代码
        }
注意:
1,try中的代码不要写太多
2,finally可有可无
3,当有多个catch时,有继承关系先写子类异常,在写父类异常.没有继承关系顺序无所谓

3,声明异常与抛出异常
        throws:声明异常
        使用语法:
        访问权限修饰符 修饰符 方法名(形参列表) throws 异常类1,异常类2...{
        }
        throw:抛出异常
                使用语法:
        自定义异常



1,throws与throw的区别?

        throws:声明异常,在方法定义时使用throw:抛出异常,在方法体中使用

2,finally,final,finalize的区别?

        finally:配合try catch使用,表示必须执行的代码

        final:不可变的,可以修饰类,属性,方法,变量

        finalize:Object类提供的方法,当对象被销毁时,由系统调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值