集合框架
1.集合中各接口之间的关系:
Collection(接口)→List(接口)→ArrayList(类)
→Queue(接口)→Deque(接口)→LinkedList(类)
→Set(接口) →HashSet(类)
→SortedSet(接口)→TreeSet(类)
Map(接口)→HashMap(接口)
→SortedMap(接口)→TreeMap(类)
比较: ArrayList 和LinkedList:
ArrayList为线性表,它是以动态数组的方式保存数据,数据的下标为自然数递增的,便于随机的访问和读取;
LinkedList为链性表,它是以链表的方式保存数据,便于数据的插入和删除。
如果在要求上不是太苛刻,可以忽略他们之间的区别。
补充:Vector和ArrayList都是以数组的形式保存数据,但是Vector中的方法加以sybchronized修饰,是线性安全的,但是性能是比ArrayList要差一些。
2.ArrayList中常用的方式实例:
1 public class List1 { 2 3 public static void main(String[] args) { 4 List<String> list = new ArrayList<String>(); 5 list.add("a"); 6 list.add("b"); 7 list.add("c"); 8 list.add("d"); 9 list.add("e"); 10 list.add("f"); 11 list.add("g"); 12 System.out.println("原:" + list); // 原:[a, b, c, d, e, f, g] 13 14 // 获取子list,该子list和原list占有相同的存储空间 15 // list.subList(fromIndex, toIndex) 前闭后开 16 List<String> list1 = list.subList(1, 3); 17 System.out.println(list1); //[b, c] 18 19 list1.set(0, "change"); 20 System.out.println(list1); //[change, c] 21 System.out.println(list);//[a, change, c, d, e, f, g] 由于list1 和list占有相同的存储空间,因此原list也改变 22 23 //删除集合中的一段数据 24 list.subList(1, 6).clear(); //删除原List中下标为1-5的元素 25 System.out.println(list); // [a, g] 26 27 } 28 }