练习java文档的ArrayList

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;
		}
	}		
	
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

细水长流cpu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值