AJPFX关于Collection接口的总结
###15collection-list-arraylist/linkedlist/
* * collection接口中的方法
* a:添加功能
* boolean add(object obj):把obj这个元素,添加到集合中去
* boolean addall(collection c):将 c 这个集合中的所有元素,都添加到本集合中来
* b:删除功能
* void clear():删除集合中的所有元素。
* boolean remove(object obj):从集合中删除 obj 这个元素
* boolean removeall(collection c):从集合中删除c中含有的所有元素
* c:判断功能
* boolean isempty():判断集合是否为空。
* boolean contains(object obj):判断集合中是否存在 obj这个元素。
* boolean containsall(collection c):判断集合中是否存在 c 集合中的所有元素。
* d:遍历功能
* iterator iterator():就是用来获取集合中每一个元素。
* e:长度功能
* int size():获取集合中的元素个数
* f:交集功能
* boolean retainall(collection c): 保留本集合和c这个集合中的共同元素
* g:把集合转换成数组
* object[] toarray():把集合变成 object类型的数组。
*/
/*
* list接口中的方法(list接口继承了collection接口,所以下面只列出了list接口的特有方法)
* list的特有功能:
*
* a:添加功能
* void add(int index, object obj):在索引为 index的位置,添加 obj这个元素
* b:删除功能
* object remove(int index):删除索引为index的元素,并把这个元素返回
* c:修改功能
* object set(int index, object obj):把索引为index的位置,修改为 obj这个元素, 并且把修改之前的元素返回。
* d:获取功能
* int indexof(object obj):返回 obj这个元素在集合中第一次出现的索引
* object get(int index):获取索引为 index的元素对象
* listiterator listiterator():列表迭代器
* e:截取功能
* list sublist(int fromindex, int toindex):返回一个新的集合,这个集合里面的元素,是原来集合中的一部分,直接看下面代码
*
###15.08_集合框架(迭代器的原理及源码解析)(了解)
iterator it = iterator iterator();//获取迭代器
it.hasnext()//判断是否有元素一般while(it.hasnext())
it.next();//获取元素
###15.12_集合框架(listiterator)(了解)
* boolean hasnext()是否有下一个
* boolean hasprevious()是否有前一个
* object next()返回下一个元素
* object previous();返回上一个元素
###15.13_集合框架(vector的特有功能)(面试用开发中不用)
* a:vector类概述
* b:vector类特有功能
* public void addelement(e obj)
* public e elementat(int index)
* public enumeration elements()
b:list有三个儿子,我们到底使用谁呢?
查询多用arraylist
增删多用linkedlist
如果都多arraylist
集合框架(linkedlist的特有功能)(掌握)
* a:linkedlist类概述
* b:linkedlist类特有功能
* public void addfirst(e e)及addlast(e e) //在开始加入元素//在最后加入元素
* public e getfirst()及getlast()////获取第一个元素//获取最后元素
* public e removefirst()及public e removelast() //删除第一个元素//删除最后一个元素
* public e get(int index);// 获取索引处的元素
_集合框架(栈和队列数据结构)(掌握)
* 栈
* 先进后出
* 队列
* 先进先出
_集合框架(泛型概述和基本使用)(掌握)
* a:泛型概述
* b:泛型好处
* 提高安全性(将运行期的错误转换到编译期)
* 省去强转的麻烦
* c:泛型基本使用
* <>中放的必须是引用数据类型
* d:泛型使用注意事项
* 前后的泛型必须一致,或者后面的泛型可以省略不写(1.7的新特性菱形泛型)
集合框架(增强for的概述和使用)(掌握)
* a:增强for概述
* 简化数组和collection集合的遍历
* b:格式:
*
for(元素数据类型 变量 : 数组或者collection集合) {
使用变量即可,该变量就是元素
}
_集合框架(三种迭代的能否删除)(掌握)
* 普通for循环,可以删除,但是索引要--
* 迭代器,可以删除,但是必须使用迭代器自身的remove方法,否则会出现并发修改异常
* 增强for循环不能删除只能遍历
_集合框架(静态导入的概述和使用)(了解)
* a:静态导入概述
* b:格式:
* import static 包名….类名.方法名;
* 可以直接导入到方法的级别
* c:注意事项
* 方法必须是静态的,如果有多个同名的静态方法,容易不知道使用谁?
这个时候要使用,必须加前缀。由此可见,意义不大,所以一般不用,但是要能看懂。
_集合框架(可变参数的概述和使用)(掌握)
* a:可变参数概述
* 定义方法的时候不知道该定义多少个参数
* b:格式
* 修饰符 返回值类型 方法名(数据类型… 变量名){}
* c:注意事项:
* 这里的变量其实是一个数组
* 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
/**
* * a:可变参数概述
* 定义方法的时候不知道该定义多少个参数
* b:格式
* 修饰符 返回值类型 方法名(数据类型… 变量名){}
* c:注意事项:
* 这里的变量其实是一个数组
* 如果一个方法有可变参数,并且有多个参数,那么,可变参数肯定是最后一个
*/
public static void main(string[] args) {
int[] arr = {11,22,33,44,55};
//print(arr);
print(11,22,33,44,55);
system.out.println("---------------");
//print();
}
/*public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
system.out.println(arr[i]);
}
}*/
public static void print(int ... arr) { //可变参数其实是一个数组
for (int i = 0; i <
错误!未找到目录项。
arr.length; i++) {
system.out.println(arr[i]);
}
}
集合框架(arrays工具类的aslist()方法的使用)(掌握)
* a:案例演示
* arrays工具类的aslist()方法的使用
integer[] i = {1,2,3,4,5};
list<integer> l = arrays.aslist(i);//将数组转成集合只能用引用类型数组
system.out.println(l);
* collection中toarray(t[] a)泛型版的集合转数组
_集合框架(集合嵌套之arraylist嵌套arraylist)(掌握)
* a:案例演示
* 集合嵌套之arraylist嵌套arraylist
hashset方法
1)基本数据类型去掉重复元素并且无索引(进 出不同)
2)引用数据类型:要重写tostring方法
如果要去除重复就要重写hashcode()方法与equals()方法
hashcode()设置的原则:/如果对象的成员变量值一样,那么就想办法让这个方法的返回值一样,否则让返回值不一样
hashset中想去掉重复元素必须重写hashcode()和equals()方法;
linkedhashset方法
特点:底层是链表实现的 是set()集合中唯一一个能保证怎么存怎么取得功能
因为是hashset的子类,索引也是保证元素的唯一性
treeset 集合:
一般类型 用来对元素进行排序的并且保证元素的唯一(去除重复元素,并排序)
引用数据类型:首先:重写tostring()方法;(如果不重写输出的是地址值)
实现接口implements comparable<本类名> 此时类名会报错(ctrl+1)
自动创建一个方法compareto(类名) {
判断成员变量
}
以上三步缺一不可
/*@override
//按照年龄排序
public int compareto(person o) {
int num = this.age - o.age; //年龄是比较的主要条件
return num == 0 ? this.name.compareto(o.name) : num;//姓名是比较的次要条件
}*/
/*@override
//按照姓名排序
public int compareto(person o) {
int num = this.name.compareto(o.name); //姓名是主要条件
return num == 0 ? this.age - o.age : num; //年龄是次要条件
}*/
/*
* aaa
* bbb
*/
public int compareto(person o) {
int length = this.name.length() - o.name.length(); //比较长度为主要条件
int num = length == 0 ? this.name.compareto(o.name) : length; //比较内容为次要条件
return num == 0 ? this.age - o.age : num; //比较年龄为次要条件
}
面试手写
public boolean equals(object obj) {
system.out.println("执行了吗");
person p = (person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
@override
public int hashcode() {
final int num = 38;
return name.hashcode() * num + age;
}*/
hashset()
* 1.特点
* treeset是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
* 2.使用方式
* a.自然顺序(comparable)
* treeset类的add()方法中会把存入的对象提升为comparable类型
* 调用对象的compareto()方法和集合中的对象比较
* 根据compareto()方法返回的结果进行存储
* b.比较器顺序(comparator)
* 创建treeset的时候可以制定 一个comparator
* 如果传入了comparator的子类对象, 那么treeset就会按照比较器中的顺序排序
* add()方法内部会自动调用comparator接口中compare()方法排序
* 调用的对象是compare方法的第一个参数,集合中的对象是compare方法的第二个参数
* c.两种方式的区别
* treeset构造函数什么都不传, 默认按照类中comparable的顺序(没有就报错classcastexception)
* treeset如果传入comparator, 就优先按照comparator
上一篇: PHP伪静态
下一篇: linux core 性能