1、Collection - List - ArrayList
- LinkedArrayList
- Set - HashSet
- LinkedHashSet
- TreeSet
class GenericTest<T>{
int age;
T a1;
T a2;
public void test(T a1, T a2){
this.a1 = a1;
this.a2 = a2;
System.out.println(a1.equals(a2));
}
}
2、集合中元素不重复,重复放不进去
内部使用HashMap来实现,键值对,键key不能重复
/**
* 泛型 -
* 泛型类
* 泛型方法
* 泛型数组
*/
public class MyClass {
public static void main(String[] args){
/*
GenericTest g1 = new GenericTest<>();
g1.test("jack","jacker");
*/
//1.集合里面对象不能重复 如果重复 加不进去
//内部使用HashMap来实现 键值对 键key不能重复
//"jack":obj
//2.集合是无序的 添加的顺序和存储的顺序无关
// 使用了默认排序
// 哈希算法
// 如何实现HashMap里面key不相同
// 计算这个key对应的对象的hash值
// 整数:在对象的地址的基础上按照一定的算法计算出来的一个整数
// 如果两个对象相同 那么计算出来的hash值就相同
//HashSet HashMap
HashSet names = new HashSet<>();
names.add("jack");
names.add("merry");
names.add("abc");
names.removeIf(ele -> {
return ele.compareTo("c") > 0;
});
//可以排序的集合
TreeSet score = new TreeSet<>();
Person p1 = new Person("jack",20);
Person p2 = new Person("jack",30);
Person p3 = new Person("rose",20);
score.add(p1);
score.add(p2);
score.add(p3);
//equals 比较的是对象内部的内容
//使用的两个对象必须实现Comparable接口的compareTo方法
//在compareTo里面实现具体该如何比较
System.out.println(p1==p2);
}
}
class Person implements Comparable{
String name;
int age;
public Person(String name, int age){
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
@Override
public int compareTo(Object o) {
//1. 判断o对象是不是peron的一个对象
return 0;
}
}
class GenericTest{
int age;
T a1;
T a2;
public void test(T a1, T a2){
this.a1 = a1;
this.a2 = a2;
System.out.println(a1.equals(a2));
}
}
3、集合是无序的,添加的顺序和存储的顺序无关,使用了默认排序
哈希算法
如何实现HashMap里面key不相同
计算这个key对应的对象的hash值
整数:在对象的地址的基础上按照一定的算法计算出来的一个整数,如果两个对象相同,技术出来的hash值就相同
HashSet HashMap
4、equals 比较的是对象内部的内容
使用的两个对象必须实现Comparable接口的compareTo方法
在compareTo里面实现具体如何比较
5、集合存取数据的特点:
键key--值value
key不能重复,可以是任意对象类型,通常用字符串String
@Override
public int compareTo(Object o) {
//1. 判断o对象是不是peron的一个对象
if (o instanceof Person){
Person o1 = (Person)o;
//自己规定比较的策略
if (this.age != o1.age){
return this.age - o1.age;
}else{
//年龄相同的情况下 再比姓名的字母
return this.name.compareTo(o1.name);
}
}else{
return -1;
}
}
6、添加对象:键值对
put:添加/更改
通过keySet可以得到所有键的集合,通过values得到所有的值
7、键值对的遍历
(1)通过遍历key得到每一个key对应的值
(2)通过EntrySet(一个内部类)得到Entry对应的key,获取Entry对应的值
8、StringBuilder
ArrayList
HashMap
9、异常处理 错误:error
处理运行过程中出现的不可控的错误,使程序更健壮
Exception
try{
//执行的代码
//可能出现异常
//一旦出现异常,系统自动创建一个异常对象,并抛出
}catch(NullPointerException e){
//如果需要自己处理异常就catch
}catch(IOException e){
//如果有多个异常,可以使用多个catch来捕获
//如果有多个异常,catch顺序从小到大
}catch(Exception e){
}
//如果异常出现,后面的代码将不会执行
//try代码块 不要抓太多
//使用throws抛出异常,给外部处理
10、圆括号里面只能添加可以关闭的对象
11、出现多个异常用逗号隔开
12、自定义Exception异常:
(1)提供一个无参构造方法
(2)提供一个有参构造方法,参数是一个字符串
感悟
打好基础才能有下文,一口吃不成胖子(比如我)
网友评论