理解:
集合没有固定长度:
常用方法
public class Hello { /* * ArrayList 存储原理是一个object类型的数据,通过Arrays.copyOf对数组进行扩容和收缩 * */ public static void main(String[] args) { fun2(); } private static void fun2() { //2.数字--->集合 //Arrays.asList() 将数组转化成List集合的方法 Object[] objs =new Object[] {"hello","hello2"}; List list = Arrays.asList(objs); System.out.println(list); } private static void fun1() { //1.集合--->数组 ArrayList list =new ArrayList(); list.add(145655); list.add("大家好"); System.out.println(list); //无参 Object[] o = list.toArray(); //toArray()方法是List接口中提供的方法,用来实现List对象转换为数组对象的功能。 //List.toArray() 有参数时 仅仅利用数组长度 Object[] objects = new Object[10]; Object[] objs = list.toArray(objects); System.out.println(Arrays.toString(objs)); } }
public class Hello2 { public static void main(String[] args) { ArrayList list=new ArrayList<>(); list.add("hello"); list.add("hello2"); System.out.println(list); //普通for循环 适用于有下标的有序集合 for (int i = 0; i <list.size() ; i++) { System.out.println(list.get(i)); } //增强for循环 和 迭代器原理一致的 适用于所有集合 for(Object o:list){ System.out.println(o); } //迭代器 iterator通常与while结合 Iterator it = list.iterator(); while(it.hasNext()){ //it.hsNext:是否有元素 有就取出来 System.out.println(it.hasNext()); } } }
存储原理是一个链表,在元素的前后分别有一个前置结点和后置结点,用于连接集合中的上一个元素和下一个元素,依次“手拉手”,构成一条链式数据的集合。
public class Hello1 { public static void main(String[] args) { LinkedList list = new LinkedList(); list.add("985"); list.add("共产党万岁"); list.addFirst(100); //将指定元素插入当前集合头部 list.addLast(77); //将指定元素插入当前集合尾部 System.out.println(list.getFirst()); //获得当前集合的首元素 System.out.println(list.getLast()); //获得当前集合的最后一个元素 System.out.println(list.removeFirst());//移除并返回当前集合的首元素 System.out.println(list.removeLast()); //移除并返回当前集合的最后一个元素 System.out.println(list); } }
LinkedList的addFirst方法源码分析
Node结点分析
链表结构分析
public class Hello { public static void main(String[] args) { /* 存储一组唯一(不允许出现重复的元素), 无序(没有index下标)的对象,HashSet是Set接口常用的实现类。 */ HashSet set = new HashSet(); set.add("共产党万岁"); set.add(6); set.add(6); set.addAll(new HashSet()); set.addAll(new LinkedList()); set.remove(6); System.out.println(set); System.out.println(set.size()); //去掉重复 } }