集合类与泛型
集合类
数组Array和集合的区别:
(1)数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)
(2)JAVA集合可以存储和操作数目不固定的一组数据。 (3)若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。
联系:使用相应的toArray()和Arrays.asList()方法可以回想转换。
ArrayList
常用api有:
1.get
2.set
3.add
4.remove
对象是object类型,四种方法可实现增删改查
5.获取长度 size
6.获取位置indexof
LinkedList
ArrayList 和 LinkedList的区别
ArrayList 底层的实现是动态数组
LinkedList 底层是链表
区别: 查询上, ArrayList效率比较高,linkedlist比较低
增删上, linkedlist效率比较高,rrayList效率低
如果不知道增删多还是查询多就用, ArrayList
LinkedList 特有方法
特有方法
addFirst()
addLast()
removeFirst()
removeLast()
5) List集合遍历的三种方式
a) 普通for循环
b) 增强for
c) 迭代器
Iterator it=a.iterator();
while(it.hasNext()) {
Object obj= it.next();
System.out.println(obj);
}
/*for (int i = 0; i < a.size(); i++) {
System.out.println(a.get(i));
}*/
for (Object object : a) {
System.out.println(object);
}
collection 规定的其他方法
clear(); isEmpty(); iterator(); toArray(); contains();
set
对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不能有重复对象,set集合中的元素是唯一的,无序的
遍历只有两种方式
添加时遍历集合判断是否有重复的,默认根据地址(hashcode) 判断,特殊情况需要重写equals方法
map
泛型
泛型是一个很宽泛,复杂的概念,这里做简单介绍。
五) 泛型的简单使用
ArrayList<User> alist = new ArrayList<User>();
alist只能存入 User类型的对象
get(int index)的返回值也是User类型
HashMap<String,User> hm = new HashMap();
hm可以的元素的key只能是String,value只能是User类
get(String key)的返回值也是User类型
关于泛型类/泛型接口/方法 后面会提到
为了定义一个类为泛型类型,需要将泛型类型放在类名之后,为定义一个方法为泛型类型,需要将泛型类型放在方法返回类型之前
这是关于别人写的泛型的一篇博客
集合的操作类的几个常用方法
1. sort
自定义类排序
1.实现comparable接口,添加泛型避免强转
2.重写compareTo方法
1.如果是int直接比较差值,返回结果
2.double类型可以通过if语句,三目运算,返回结果,也可以调用MAth.ceil()方法,向上取整(-0.5)他们的差值判断???(先判断相等)
int result=this.math-o.math;
result=result==0?this.chinese-o.chinese:result;
result=result==0?this.english-o.english:result;
return result;
2.reverse
反转
3.binarysearsh
二分查找
4.max,min
上一篇: Java集合框架四:泛型和工具类
下一篇: Java 习题 (66)