1、add中的add(int index, Element e);index只能按照顺序增加,不能说只有两个元素,就add(10,1);这样的,也就是说index能设置的范围是0-size();包括size()和0。
2、addAll()是复制引用,所以修改其中元素都会相互影响,但是使用set或者类似clear方法设置list中的元素,应该是直接替换引用,不会相互影响。
3、clear()
4、clone();
5、contains();要注意引用类型需要指向同一个对象,才会返回true
6、ensureCapacity(int capacity) 如果设置的int capacity大于当前的真实capacity的话,就会直接变成该数值,如果小于的话,就不变
7、forEach(Consumer) 别看这个Consumer很奇怪,只要知道他是一个函数式接口即可,就直接(s) -> System.out.println(s)就可以正常使用了
8、get()
9、indexOf()
10、isEmpty()
11、iterator()
12、lastIndexOf()
13、listIterator();指定Index的并不是说只包括之后的元素,还包括之前的,只是指定了开始位置而已
14、remove()
15、removeAll()使用这个就可以删除所有相同的元素。和remove(Object object) 不一样,它会删除所有相同元素
16、removeIf() 这个Pradicate用法会更多一点
17、removeRange()应该是给子类使用的
18、replaceAll()
19、retainAll() 应用类型,应用指向的对象也要是同一个,内容相同不是同一个对象也不行
20、set()返回的对象是被替换掉的对象
21、size()
22、sort()
23、spliterator()不知道具体用途
24、toArray([])这个搞不懂,返回值和传入都复制了一份,就是能够变成对应类型,不用用Object[]
25、trimToSize();
import java.util.*;
import java.lang.reflect.Field;
public class Test1
{
public static void main(String[] args)
{
System.out.println("Hello World!");
ArrayList<String> list1 = new ArrayList<>();
ArrayList<String> list2 = new ArrayList<>(10);
boolean b = list1.add("I try to go outside! I would'n come back!");
System.out.println(b+"");
list1.add(1,"Oh; That's cool!");
list1.add(2,"No; it is only way to survive.");
System.out.println(list1);
list1.add(1,"good");
System.out.println(list1);
list2.addAll(list1);
System.out.println(list2);
//我想看看,修改list2中的list1中的元素,会不会改变list1中的元素
list2.set(1,"c");
System.out.println("改变后的list2:"+list2);
System.out.println("list1:"+list1);
//并没有改变list1
//再试一试用StringBuffer
ArrayList<StringBuffer> list3 = new ArrayList<>();
StringBuffer sb1 = new StringBuffer("哈哈");
StringBuffer sb2 = new StringBuffer("可不可以留");
list3.add(sb1);
list3.add(sb2);
//修改sb1看看list3中的sb1会不会修改
sb1.append("gg");
System.out.println(list3);
ArrayList<StringBuffer> list4 = new ArrayList<>();
list4.addAll(0,list3);
//修改sb2看看list3和list4
sb2.append("很好");
System.out.println("list3:"+list3);
System.out.println("list4:"+list4);
//使用set试一下
list3.set(1,new StringBuffer("阿虎"));
System.out.println("list3:"+list3);
System.out.println("list4:"+list4);
list3.clear();
System.out.println("list3:"+list3);
System.out.println("list4:"+list4);
ArrayList<StringBuffer> list5 = (ArrayList<StringBuffer>) list4.clone();
System.out.println(list5);
System.out.println(list5.contains(sb1));
System.out.println(list5.contains("哈哈gg"));
System.out.println(getArrayListCapacity(list5));
list5.ensureCapacity(1);
System.out.println(getArrayListCapacity(list5));
list5.forEach((s) -> System.out.println(s));
System.out.println(list5.get(0));
System.out.println(list5.indexOf(sb1));
System.out.println(list5.indexOf(sb2));
System.out.println(list3.isEmpty());
System.out.println(list5.isEmpty());
Iterator it = list5.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
System.out.println(list5.lastIndexOf(sb1));
list5.add(sb1);
System.out.println(list5.lastIndexOf(sb1));
ListIterator<StringBuffer> it2 = list5.listIterator();
while(it2.hasNext())
{
System.out.println(it2.nextIndex()+":"+it2.next());
}
while(it2.hasPrevious())
{
System.out.println(it2.previousIndex()+":"+it2.previous());
}
ListIterator<StringBuffer> it3 = list5.listIterator(1);
while(it3.hasNext())
{
System.out.println(it3.nextIndex()+":"+it3.next());
}
while(it3.hasPrevious())
{
System.out.println(it3.previousIndex()+":"+it3.previous());
}
System.out.println("list5:"+list5);
list5.remove(0);
System.out.println("list5:"+list5);
list5.add(sb1);
System.out.println("list5:"+list5);
list5.remove(sb1);
System.out.println("list5:"+list5);
ArrayList<StringBuffer> list6 = new ArrayList<>();
list6.add(sb1);
list5.add(sb1);
System.out.println("list5:"+list5);
list5.removeAll(list6);
System.out.println("list5:"+list5);
ArrayList<String> list7 = new ArrayList<>();
list7.add("abc");
list7.add("a11");
list7.add("bccc");
list7.add("ccc");
System.out.println("list7:"+list7);
//list7.removeIf(s-> s.startsWith("a"));
//list7.removeRange(0,1);
list7.replaceAll((s) -> s+"哈哈");
System.out.println("list7:"+list7);
ArrayList<String> list8 = new ArrayList<>();
list8.add(list7.get(0));
list8.add(list7.get(1));
System.out.println("list7:"+list7);
list7.retainAll(list8);
System.out.println("list7:"+list7);
list5.add(new StringBuffer("哈哈gg"));
System.out.println("list5:"+list5);
System.out.println("list6:"+list6);
list5.retainAll(list6);
System.out.println("list5:"+list5);
System.out.println(list6.set(0,new StringBuffer("a")));
list7.add("a");
list7.add("adfasdfadsf");
System.out.println("size():"+list7.size());
System.out.println("list7:"+list7);
list7.sort((a,c) -> (a.length() - c.length()));
System.out.println("list7:"+list7);
Spliterator<String> spliter = list7.spliterator();
System.out.println(spliter.estimateSize());
List<String> list9 = list7.subList(2,4);
System.out.println("list9:"+list9);
Object[] stringarray = list9.toArray();
System.out.println(Arrays.toString(stringarray));
String[] a = new String[list9.size()];
String[] array = list9.toArray(a);
System.out.println(Arrays.toString(a));
list7.ensureCapacity(100);
System.out.println(getArrayListCapacity(list7));
list7.trimToSize();
System.out.println(getArrayListCapacity(list7));
}
/**
* 用反射获取数组的capacipy
*/
public static int getArrayListCapacity(ArrayList<?> arrayList)
{
Class<ArrayList> arrayListClass = ArrayList.class;
try
{
Field field = arrayListClass.getDeclaredField("elementData");
field.setAccessible(true);
Object[] objects = (Object[]) field.get(arrayList);
return objects.length;
}
catch(NoSuchFieldException e)
{
e.printStackTrace();
return -1;
}
catch(IllegalAccessException e)
{
e.printStackTrace();
return -1;
}
}
}