collection:List、Set
1)List:(有序可变的数组 ,数组一般存放的是对象的引用,允许添加重复元素)
ArrayList ---------> 数组形式存储,默认对象数组10,方便添加与查找,线程不安全(不同步),效率高。
LinkedList ---------> 链表结构存存储,双向链表,适合插入和删除,效率低。
Vector ---------> 数组形式存储, 默认对象数组10,每次扩容10,线程安全(同步),效率低。
Arraylist的常用方法:
1)增 : add()
2)删 : remove(如果是值的话就移除一个) 、
removeAll()相等于clear、
clear()
3)查 : get() 、
comtains (返回boolean) 、
indexof(
此列表中第一次出现的指定元素的索引,如果列表不包含该元素,则返回 -1
)、
isEmpty(
如果此列表中没有元素,则返回
true
)
4)改:set(改哪个,改值)
list.add(1);
list.add(2);
list.add(0, 2);System.out.println( list ); //在第几个位置插入元素
list.addAll(list);System.out.println( list ); //把list的元素加到list中
list.addAll(0, list);System.out.println( list ); //把list中的元素加到list中第一个位置的元素中
System.out.println( list.size() ); //返回list的长度
System.out.println( list.contains(1) ); //查看list中是否有1元素,返回boolearn类型
System.out.println( list.get(0) ); //查看list中的第一个元素
System.out.println( list.set(0, 10) ); System.out.println( list ); //修改第一个元素的值位10,返回下标
System.out.println( list.indexOf(8)); //此列表中第一次出现的指定元素的索引,如果列表 不包 含该元素,则返回 -1
list.remove(0); System.out.println( list ); //移除第一个元素
list.clear();
//清空list列表
System.out.println( list.isEmpty() ); //查看list中是否为空的,返回boolearn类型
HashSet ------>HashMap的一个实例、不保证遍历顺序恒久不变。
添加元素时如何判断是否重复,先调用对象的hashCode方法求值,如果
hash值在集合中不存在,那么该对象可以添加(不重复的);如果hash值
相同,(还不能确定对象)是否相同,因为不同的对象有可能产生不同的
hashCode值,那么需要再调用equals方法来验证。equals方法返回
true,表示两个对象相同,返回false,表示两个对象不同。
(即两个对象值相同,把两个对象写成一个对象的话就要重写对象(类)
中的hashCode方法和equals方法)
TreeSet ------>
TreeMap的一个实例、自热顺序排列(从小到大)
在TreeSet集合中添加自定义对象,必须实现 Comparable接口,因为添加
方法会使用compareTo方法来验证对象的排序位置,并验证对象是否重
复,如果compareTo返回0,表示两个对象重复,不同的话,使用大小来
决定排序的顺序