[关闭]
@liruiyi962464 2017-03-21T03:58:14.000000Z 字数 4725 阅读 545

集合( List)

java

  • List:元素是有序的(怎么存的就怎么取出来,顺序不会乱)。元素可以重复。(角标1上有个3,角标2上也可以有个3)因为该集合
    体系有索引
  • ArrayList:底层的数据使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删很慢)线程不同步
  • LinkedList:底层的数据结构是链表结构(特点是查询较慢,但增删较快)

遍历方法

  • ArrayList LinkedList三种方式都能使用
  • HashSet TreeSet没有办法使用for,foreach循环的底层是有迭代器实现的,能用迭代器遍历就能用foreach
  • 凡是能用foreac遍历的都能用迭代器遍历
  1. ArrayList<String> arrayList = new ArrayList<String>();
  2. arrayList.add("张三");
  3. arrayList.add("李四");
  4. arrayList.add("王五");
  5. //直接输出
  6. System.out.println(arrayList.arrayList(i));
  7. // foreach
  8. for (String string : arrayList) {
  9. System.out.println(string);
  10. }
  11. // get()和size()
  12. for (int i = 0; i < arrayList.size(); i++) {
  13. System.out.println(arrayList.get(i));
  14. }
  15. // 迭代器 (Iterator)
  16. //(hasNext:是否有数据存在)(next:迭代输出)
  17. System.out.println("迭代器遍历");
  18. Iterator<String> iterator = arrayList.iterator();
  19. while(iterator.hasNext()){
  20. System.out.println(iterator.next());
  21. }
  22. //迭代器(for)
  23. for (Iterator iterator = arratList.iterator(); iterator.hasNext();) {
  24. System.out.println(iterator.next());
  25. }

ArrayList

arrayList的特点

  • 大小可变,有序,可重复。
  • 实现了List接口
  • 动态数组
  • ArrayList:底层的数据使用的是数组结构(数组长度是可变的百分之五十延长)(特点是查询很快,但增删很慢)线程不同步
  • ArrayList arrayList = new ArrayList(); //规定类型

迭代器 (Iterator)

  1. hasNext:是否有数据存在)(next:迭代输出)
  2. System.out.println("迭代器遍历");
  3. Iterator<String> iterator = arrayList.iterator();
  4. while(iterator.hasNext()){
  5. System.out.println(iterator.next());
  6. }

ArrayList实例

  1. // 集合
  2. ArrayList arrayList = new ArrayList<>();
  3. // 添加数据 1.Integer 2.Boolean
  4. // 可以添加重复数据 有序
  5. arrayList.add(1);
  6. arrayList.add(true);
  7. arrayList.add("边铂超");
  8. arrayList.add("边铂超1");
  9. arrayList.add(3.141592653579);
  10. System.out.println("第一次输出:" + arrayList);
  11. System.out.println(arrayList.addAll(arrayList)+"第二次输出:" + arrayList);
  12. // 按照指定位置插入(add)
  13. arrayList.add(1, "我是新插入的");
  14. System.out.println("第一次插入后输出:" + arrayList);
  15. // 查询下标对应的元素(get)
  16. System.out.println("此下标对应的元素为" + arrayList.get(2));
  17. // 查询越界 报错
  18. System.out.println(arrayList.get(6));
  19. // 返回arrayList首次出现的指定元素的下标,如果指定的元素不存在,返回-1(indexOf)
  20. System.out.println("指定元素是否存在:" + arrayList.indexOf("1"));
  21. //返回arrayList最后出现的指定元素的下标,如果指定的元素不存在,返回-1(lastIndexOf)
  22. System.out.println("指定元素是否存在:" + arrayList.lastIndexOf("1"));
  23. // 是否有指定元素,有返回true,没有则为false(contains)
  24. System.out.println("指定元素是否有:" + arrayList.contains(90));
  25. // 判断是否为空 空返回true,没有则为false(isEmpty)
  26. System.out.println("指定元素是否为空:" + arrayList.isEmpty());
  27. // 删除指定下标的元素,并且返回删除的元素(remove)
  28. System.out.println("根据指定下标删除:" + arrayList.remove(3) + "--后为:" + arrayList);
  29. // 删除指定元素,有返回true,没有则为false(remove) 无法删除整形,会认为整形变量为下标
  30. System.out.println(arrayList.remove("根据指定下标删除:" + 3.141592653579) + "--后为:" + arrayList);
  31. //根据下标指定位置替换 返回替换的元素(set)
  32. System.out.println("根据下标换完之后:"+arrayList.set(3, "我是换来的")+arrayList);
  33. //返回元素个数(size)
  34. System.out.println("元素个数为:"+arrayList.size());
  35. //按照顺序打印(toArray)
  36. Object[] bobjs = arrayList.toArray();
  37. for (Object object : bobjs) {
  38. System.out.println(object);
  39. }
  40. // 移除所有的元素(clear)
  41. arrayList.clear();
  42. System.out.println("删除hou:" + arrayList);

LinkedList

  • 链表
  • 底层的数据结构是链表结构(特点是查询较慢,但增删较快)
  • 提供了一个链表数据结构
  1. //栈:先进后出,有一个口
  2. addFirst();removeFirst();
  3. addLast();removeLast();
  4. //队列:先进先出,有两个口
  5. addFirst();removeLast();
  6. addLast();removeFirst();

LinkedList实例

  1. LinkedList<String> linkedList = new LinkedList<String>();
  2. linkedList.addFirst("1");
  3. linkedList.addFirst("2");
  4. linkedList.addFirst("3");
  5. linkedList.addFirst("4");
  6. linkedList.addLast("我是最后传传进去的");//元素添加到此列表的结尾
  7. /*4321*/
  8. System.out.println(linkedList);
  9. //元素添加到此列表的结尾
  10. System.out.println(linkedList.addAll(linkedList)+"第二次输出:" + linkedList);
  11. linkedList.removeFirst();//删除第一个
  12. linkedList.removeLast();//删除最后一个
  13. System.out.println(linkedList);
  14. //如果此列表包含指定元素,则返回 true。
  15. System.out.println(linkedList.contains("2"));
  16. //返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
  17. Iterator<String> it = linkedList.iterator();
  18. while(it.hasNext()){
  19. System.out.println(it.next());
  20. }
  21. //获取但不移除此列表的头(第一个元素)。
  22. System.out.println(linkedList.element());
  23. //返回此列表中指定位置处的元素。
  24. System.out.println(linkedList.get(3));
  25. //返回此列表的第一个元素/最后
  26. System.out.println(linkedList.getFirst()+"/"+linkedList.getLast());
  27. //返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
  28. System.out.println(linkedList.indexOf("3"));
  29. //返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
  30. System.out.println(linkedList.lastIndexOf("3"));
  31. //返回此列表中的元素的列表迭代器(按适当顺序),从列表中指定位置开始。
  32. System.out.println(linkedList.listIterator(0).next());
  33. //将指定元素添加到此列表的开头/末尾
  34. System.out.println(linkedList.offerFirst("添加到开头")+""+linkedList);
  35. System.out.println(linkedList.offerLast("添加到末尾")+""+linkedList);
  36. //获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。最后一个元素
  37. System.out.println(linkedList.peekFirst()+""+linkedList);
  38. System.out.println(linkedList.peekLast()+""+linkedList);
  39. //获取并移除此列表的第一个元素;如果此列表为空,则返回 null。最后一个元素
  40. System.out.println(linkedList.pollFirst()+""+linkedList);
  41. System.out.println(linkedList.pollLast()+""+linkedList);
  42. //从此列表所表示的堆栈处弹出一个元素
  43. System.err.println(linkedList.poll());
  44. //将元素推入此列表所表示的堆栈
  45. linkedList.push("sb");
  46. System.out.println(linkedList);
  47. //将此列表中指定位置的元素替换为指定的元素。
  48. System.err.println(linkedList.set(0, "2b"+""+linkedList));
  49. //返回以适当顺序(从第一个元素到最后一个元素)包含此列表中所有元素的数组。
  50. linkedList.toArray();
  51. System.out.println(linkedList);
  52. //删除所有数据
  53. linkedList.clear();
  54. System.err.println(linkedList);
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注