JavaSE 异常、集合

本文介绍了Java中的异常处理机制,包括运行时异常与非运行时异常的区别,以及如何使用try、catch、finally进行异常捕获与处理。同时,详细讲解了集合类如List、Set、Map的操作方法及排序技巧。
摘要由CSDN通过智能技术生成

异常处理

异常

程序若是运行时错误,会导致程序的崩溃,指运行时发生的不正常事件,能够被程序处理,可以使程序继续运行

运行时异常:也称为非检测异常,这些异常在编译使其不检测,程序中可以选择处理,也可以不处理,如果不处理运行时会中断,但编译没有问题

非运行时异常:也称为检测异常,是必须进行处理的异常,如果不处理,会发生编译错误


错误

错误是编译时错误,程序不能正常运行,要进行必要的代码修改


异常捕获

try不能单独存在,必须与catchfinally搭配才能使用,作用是进行异常的捕获

catch:也不能单独使用,必须与try搭配,可以有多个,但父类的异常类型必须在最后,处理异常的代码只会在出现对应异常时执行

finally:不能单独使用,必须与 try搭配,只能有一个,通常用于资源的释放,其中的代码无论如何都会执行,除非存在”System. exit(1); ”强行退出程序,即使有 return也会执行到 finally中的代码


throw 向外抛出异常,只能抛一个异常

Throws 写在方法后面,可以抛出多个异常,用”,”隔开



集合

集合与数组

1.    数组长度是固定的,集合的长度是动态生成的

2.    数组的类型是固定的,集合存储的类型可以是不固定的(不指定泛型)或固定(指定类型)


List & ArrayList

1.    创建普通集合:长度是动态的,可以存储任何数据类型

List list = new ArrayList();      //ArrayList采用数组方式存储
list.add(Object);                //添加一个元素
list.add(index, object);          //在index位置添加一个元素,index从0开始
list.clear();                    //清空集合
list.remove(index);              //移除指定下标的元素
list.size();                     //获取集合大小
list.get(index);                 //获取index位置的元素

2.    创建泛型集合

List<String> list = newArrayList<String>();

区别:泛型集合 规定了存储的数据类型,而普通集合可以存任意类型


LinkedList

List list = new LinkedList();		//LinkedList以链表的形式存储
(LinkedList)list.addFirst(Object); 	//该方法在LinkedList类中,因此需要强转
(LinkedList)list.add(Object);

集合排序

package com.etc.homework.list;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class Main {

	public static void main(String[] args) {

		
		List<Person> list = new ArrayList<Person>();
		
		Person person_0 = new Person();
		person_0.setName("aaa");
		person_0.setPassword("111");
		person_0.setAge(10);

		Person person_1 = new Person();
		person_1.setName("bbb");
		person_1.setPassword("222");
		person_1.setAge(30);
		
		Person person_2 = new Person();
		person_2.setName("ccc");
		person_2.setPassword("333");
		person_2.setAge(20);
		
		list.add(person_0);
		list.add(person_1);
		list.add(person_2);
		
		/* 集合的排序步骤:
		 * 1.Collections.sort(list);
		 * 2.实现Comparable接口
		 * 3.覆写compareTo方法
		 */
		Collections.sort(list);
		
		for(int i=0;i<list.size();i++){
			System.out.println(list.get(i));
		}
		
	}
	
}
package com.etc.homework.list;
/**
 * Person
 */
public class Person implements Comparable<Person> {

	private String name;
	private String password;
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	@Override
	public String toString() {
		return "Person [name=" + name + ", password=" + password + ", age="
				+ age + "]";
	}
	/*
	 * 实现compareTo方法
	 */
	@Override
	public int compareTo(Person person) {
		// TODO Auto-generated method stub
		return this.age < person.getAge() ? -1 : this.age == person.getAge() ? 0 : 1;
	}

}

HashSet & TreeSet

Set set = new HashSet();
set.size();
set.add(Object);
set.remove(Object);
set.clear();
//遍历方式
for(Object obj : set) {			//增强for循环形式
	System.out.println(obj);
}
Iterator iterator = set.iterator();
while(iterator.hasNext()) {		//使用迭代器迭代
	System.out.println(iterator.next());
}
//特点:添加重复的数据会被忽略

//与HashSet基本一致,但TreeSet可以自动进行排序
//TreeSet以第一个添加的类型为泛型
treeSet.first();             //取第一个元素
treeSet.last();             //取最后一个元素


HashMap & TreeMap

Map map = new HashMap();
map.put(key, value); 			//重复添加同一个key时,会覆盖之前的值
map.get(key);
map.remove(key);
map.clear();
map.size();
//遍历方式:
//推荐遍历法:	
Iterator<Entry<String, String>> iterator2 = map.entrySet().iterator();
while (iterator2.hasNext()) {
	Entry<String, String> entry = iterator2.next();
// Map.Entry<String, String> entry = iterator2.next();
	System.out.println(entry.getKey()+ " : " + entry.getValue());	
}
//keySet遍历
Iterator<String> iterator = map.keySet().iterator();
while(iterator.hasNext()) {
	String index = iterator.next();
	System.out.println(index + " : " + map.get(index));
}
//与HashMap基本一致,但key值会自动排序

Arrays类自动排序

String[] strArr = new String[5];
Arrays.sort(strArr); 			//可以对任意数组进行排序



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值