list接口
* List接口
* 特点:
* 1.集合是有序的(存储有序)
* 2.有索引,方便查找和修改
* 3.List集合可重复
* public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
结论:无论添加重复还是不重复的元素,结果都是返回添加成功,所以List集合是可重复的
* 4.允许存储null值
* 所有方法:
* 1.添加功能
* boolean add(Object obj)
* boolean addAll(Collection c)
*
* void add(int index, E element)
* boolean addAll(int index, Collection<? extends E> c)
* 2.删除功能
* void clear()
* boolean remove(Object o)
* boolean removeAll(Collection<?> c)
*
* Object remove(int index)
* boolean remove(Object o)
* 3.修改功能
* Object set(int index, E element)
* 4.遍历功能
* Object[] toArray()
* Iterator<E> iterator()
* <T> T[] toArray(T[] a)
*
* ListIterator<E> listIterator()
* ListIterator<E> listIterator(int index)
* 5.判断功能
* boolean contains(Object o)
* boolean containsAll(Collection<?> c)
* boolean isEmpty()
*
* 6.其他功能
* boolean retainAll(Collection<?> c)
* 7.获取集合长度的功能
* int size()
* 8.获取功能
* int indexOf(Object o)
* Object get(int index)
* int lastIndexOf(Object o)
* List subList(int fromIndex, int toIndex)
*/
public class ListDemo01 {
public static void main(String[] args) {
List list = new ArrayList();
list.add("老王");
list.add("老李");
list.add("老张");
list.add("老李");
// list.add(null);
// list.add(null);
// for (Object object : list) {
// System.out.println(object);
// }
System.out.println(list);
System.out.println("----------void add(int index, E element) ---------------");
list.add(2, "隔壁老王");
System.out.println(list);
/*
* Object remove(int index)
* boolean remove(Object o)
*/
System.out.println("--------------remove-----------------");
System.out.println("boolean remove(Object o):" + list.remove("老李"));
System.out.println(list); // [老王, 隔壁老王, 老张, 老李]
Object obj = list.remove(3);
System.out.println(obj); // 老李
System.out.println(list); // [老王, 隔壁老王, 老张]
System.out.println("------------Object set(int index, E element) -------------");
Object obj2 = list.set(2, "隔壁老张");
System.out.println(obj2);
System.out.println(list);
System.out.println("-----------------获取功能-------------------");
/*
* int indexOf(Object o)
* Object get(int index)
* int lastIndexOf(Object o)
* List subList(int fromIndex, int toIndex)
*/
// [老王, 隔壁老王, 隔壁老张]
list.add("老王");
System.out.println(list); // [老王, 隔壁老王, 隔壁老张, 老王]
int index = list.indexOf("1234老王");
System.out.println(index);
Object obj3 = list.get(0);
System.out.println(obj3);
int index2 = list.lastIndexOf("老王");
System.out.println(index2);
List subList = list.subList(1, 3);
System.out.println(list);
System.out.println(subList);
}
}
Arraylist
* 数据结构: 数据的存储方式
* 和集合相关的数据结构: 数组 栈 队列 链表 哈希表 二叉树
*
* 主要是观察集合的add方法
*
* 1.有序,有索引
* 2.元素可以重复
* 3.可以存储null值
* 4.随机访问速度快,修改快,增加/插入或者移除/删除的效率慢
* 5.线程不安全
*
* 去重复:
* 1.创建一个新集合
* 2.选择排序思想去重复
*
* 如何排序?
* Collections.sort(list);
* 如何变安全?
* Collections.synchronizedList(list);
* 遍历方式:
* 六种
*
*/
public class ArrayListDemo01 {
public static void main(String[] args) {
ArrayList list = new ArrayList();
// list.add("apple");
// list.add("banana");
// list.add("pear");
// list.add("orange");
// list.add("pear");
// list.add("pear");
// list.add("banana");
list.add(25);
list.add(13);
list.add(2);
list.add(5);
list.add(125);
System.out.println(list);
Collections.sort(list);
System.out.println(list);
Collections.synchronizedList(list);
}
}