十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
了一些所谓大公司的Java面试问题,发现对于JAVA集合类的使用都比较看重似的,而自己在这方面还真的是所真甚少,抽空也学习学习吧。
站在用户的角度思考问题,与客户深入沟通,找到凤冈网站设计与凤冈网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站建设、成都做网站、企业官网、英文网站、手机端网站、网站推广、国际域名空间、雅安服务器托管、企业邮箱。业务覆盖凤冈地区。
java.util包中就包含了一系列重要的集合类,而对于集合类,主要需要掌握的就是它的内部结构,以及遍历集合的迭代模式。
接口:Collection所有集合类的根类型,主要的一个接口方法:booleanadd(Ojbectc)虽返回的是boolean,但不是表示添加成功与否,因为Collection规定:一个集合拒绝添加这个元素,无论什么原因,都必须抛出异常,这个返回值表示的意义是add()执行后,集合的内容是否改了(就是元素有无数量、位置等变化)。
类似的addAll,remove,removeAll,remainAll也是一样的。
用Iterator模式实现遍历集合Collection有一个重要的方法:iterator(),返回一个Iterator(迭代子),用于遍历集合的所有元素。
Iterator模式可以把访问逻辑从不同类的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。
for(Iteratorit=c.iterator();it.hasNext();){...}不需要维护遍历集合的“指针”,所有的内部状态都有Iterator来维护,而这个Iterator由集合类通过工厂方法生成。
每一种集合类返回的Iterator具体类型可能不同,但它们都实现了Iterator接口,因此,我们不需要关心到底是哪种Iterator,它只需要获得这个Iterator接口即可,这就是接口的好处,面向对象的威力。
要确保遍历过程顺利完成,电脑培训认为必须保证遍历过程中不更改集合的内容(Iterator的remove()方法除外),所以,确保遍历可靠的原则是:只在一个线程中使用这个集合,或者在多线程中对遍历代码进行同步。
去API看看TreeSet类吧
public int compareTo(Object o)
后面是传入一个Object类型的参数,返回一个int类型的参数
UpdateStu upstu = (UpdateStu) o;
声明一个UpdateStu 的引用指向一个Object强转为UpdateStu 的对象
int result = id upstu.id ? 1 : (id == upstu.id ? 0 : -1);
这个意思是id如果大于upstu.id,就把1赋值给result ,如果不,则把后面的(id == upstu.id ? 0 : -1);赋值给result
return result;
返回给result值
//我用集合框架的老大跟子类ArrayList给你写个例子
import java.util.*;
public class CollectionDemo{
public static void main(String[] args){
Collection c = new ArrayList();
//增加
c.add("Java01");
c.add("Java02");
//删除0角标的值
c.remove(0);
//排序 为了方便,我把集合框架转成了String[]数组
String[] arr = new String[c.size()];
arr = c.toArray();
Arrays.sort(arr);
//最大值
System.out.println(arr[arr.length-1]);
//因为我是String字符串集合值,没办法比较平均值,可以更改为Interger
}
}
1) System.out.println(list);
2) [Hello,Java,Learn,World]
3)改第一句List list=new LinkedList();
1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。
2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。
3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。
4. ArrayList的空间浪费主要体现在在list列表的结尾预留一定的容量空间,而LinkedList的空间花费则体现在它的每一个元素都需要消耗相当的空间。
4)Vector list=new Vector();
1. Vectors是可同步化的,意思就是说,任何操作Vector的内容的方法都是线程安全的,相反的,另一方面,ArrayList是不可同步化的,所以也不是线程安全的。
2. 不管是ArrayList还是Vector,在它们内部都是使用一个数组来保存数据的。开发过程中,在使用它们任何一个的时候,你都需要记住这一点。你在往一个ArrayList或者Vector里插入一个元素的时候,如果内部数组空间不够了,ArrayList或者Vector就要扩展它的大小。Vector在默认情况下是增长一倍的大小,而ArrayList增加50%的大小。