集合与IO(一)——集合类
集合和数组的区别
- 集合可以改变长度
- 数组长度不可变
ArrayList集合类
- add //添加数据;在指定索引位置插入一个数据
- addAll //添加多条数据;在指定索引位置插入多条数据
- remove/removeAll //删除一条或多条数据;删除指定索引位置的一条或多条数据
- contains/containsAll //查看集合是否包含一条或多条数据
- retain retainAll //求交集
- isEmpty
- toArray
父类List拥有的方法
- add(int index,Object ele) //在指定索引位置插入一个数据
- get(int index) //获取指定索引位置的一条数据
- remove(int index) //删除指定索引位置的一条数据
列表(List)的特点
- 有序的 //添加的元素按添加的先后顺序排列
- 可重复 //添加的元素可重复
Vector列表
与ArrayList集合类使用方式类似,区别在于线程是否安全。Vector的线程比ArrayList安全,但性能比ArrayList的低。如程序不是多线程,可选用ArrayList集合类。
- addElement
- elementAt
- 迭代器遍历
LinkedList列表
与ArrayList集合类的区别在于LinkedList可以很方便的插入数据和删除数据,而ArrayList集合类插入数据和删除数据比LinkedList列表慢。若需要频繁的插入和删除数据时,就使用LinkedList列表,因为它的性能比较高。
- add
- addFirst //在列表首位添加数据
- addLast //在列表末尾添加数据
集合的遍历
-
得到数组toArray
import java.util.ArrayList; public class ArrayListDemo { public static void main(String[] args) { ArrayList al=new ArrayList();//集合类对象 //添加一条数据 al.add("l"); al.add("lsn"); Object[] oArray=al.toArray(); //将集合中的每条数据添加到oArray对象中 for(int i=0;i<oArray.length;i++){ System.out.print(oArray[i]+" "); } } }
-
得到遍历器iterator(只能遍历一次)
public class ArrayListDemo { public static void main(String[] args) { ArrayList al=new ArrayList();//集合类对象 //添加一条数据 al.add("小明"); al.add("小红"); Iterator iterator=al.iterator(); System.out.println(iterator.next());//当每输出一次,指针就会指向下一个元素 System.out.println(iterator.next()); //在未知元素个数时通过此方法遍历查看集合元素,只能遍历一次 while(iterator.hasNext()){ System.out.println(iterator.next()); }
-
高级for循环遍历
public class ArrayListDemo { public static void main(String[] args) { ArrayList al=new ArrayList();//集合类对象 //添加一条数据 al.add("小明"); al.add("小红"); for(Object o:al){ System.out.println(o); } }
ArrayList、LinkedList、Vector三者的共同特点:可以添加重复数据,有序的(按照添加顺序排列)
集合中泛型的使用
集合里面只能存储引用类型;数组里面可以存储基本类型和引用类型。
ArrayList<Integer> al=new ArrayList<Integer>(); //参考例子,<Integer>是可省略部分,省略时代表可以存储任意类型的值
al.add(456); //会自动对基本类型进行装箱操作
HashSet集合类
- add //添加元素
HashSet的特点
- 无序的 //内部有自己的存储算法
- 不重复 //不会重复添加相同的数据
HashSet的遍历
- 高级for
TreeSet集合类
TreeSet的特点
- 无序的 //内部有自己的存储算法
- 不重复 //不会重复添加相同的数据
TreeSet的遍历
- 高级for
Map键值对存储(HashMap、TreeMap)
- put //将一个键值对存储到map中。键不能相同,如果相同的话,会把之前存储的值覆盖掉
- containsKey //是否包含某个键
- containsValue //是否包含某个值
- keySet //获取map键的集合
- get //通过键获取键所对应的值
关于HashTable和HashMap的区别
HashTable线程安全,但是性能比HashMap低。