Collection   接口   

方法实现

boolean  add(Object o);//添加

boolean  remove(Object o);//移除

修改方法   让实现类自己去实现修改元素

 判断功能
boolean contains(Object o) 是否包含元素
boolean isEmpty()            是否为空
转换功能
Object[] toArray();

增强for进行遍历   获取集合中的元素

public class CollectionTest01 {
public static void main(String[] args) {
Collection<String> c = new ArrayList<String>();
/*
* 增删改查
*/
// 添加
c.add("hello");
c.add("world");
c.add("java");
System.out.println(c.contains("java"));
System.out.println(c.isEmpty());
System.out.println(c);
// 移除
c.remove("java");
System.out.println(c);
// 遍历
for (String st : c) {
System.out.println(st);
}
System.out.println("--------");
Object[] array = c.toArray();
for (int i = 0; i < array.length; i++) {
System.out.println(array[i]);
} }
}

  

输出结果:
true
false
[hello, world, java]
[hello, world]
hello
world
--------
hello
world

  

List  继承于 Collection 接口

    //私有方法

   ListIterator   ListIterator()           解决了Iterator迭代器的添加并发性

   E get(int index)                            获取集合的元素

   E set(int index,E element)           修改指定位置的所以

    int    indexOf(Object o)                    查寻元素的索引位置

    

public class ListTest {
public static void main(String[] args) {
List<String> list=new ArrayList<String>();
list.add("hello");
list.add("world");
list.add("java");
list.add(1, "Hi");//按照索引添加
System.out.println(list);
System.out.println("-------");
//获取元素
System.out.println(list.get(0));
System.out.println("-------");
//修改元素
list.set(0, "Hi");
System.out.println(list.get(0));
System.out.println("-------");
int i = list.indexOf("java");
System.out.println("java的索引位置"+i);
}
}

  

ArrayList

  list接口的实现类   实现了所有的方法

  构造方法

     ArrayList()   构造一个初始容量为 10 的空列表。  如果超过10个  会自动扩容

    ArrayList(int initialCapacity)   构造一个具有指定初始容量的空列表。

    底层是个数组

     增

      boolean  add(Object o);

          void add(int index,E element)

 E remove(int index);

boolean remove(Object o);

 E set(int index,E element)


 E get(E Element)

public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> array=new ArrayList<String>();
array.add("hello");
array.add("hello");
array.add("hello");
array.add("hello");
array.add(0,"java");//按照索引插入
System.out.println(array);
System.out.println("---");
array.remove(0);//按照索引移除
System.out.println(array.remove("hello"));//按照元素移除
System.out.println(array);
System.out.println("------");
array.set(0, "PHP");//按照索引修改
System.out.println(array);
System.out.println("----");
System.out.println(array.get(0));//按照索引获取元素
}
}

  

输出结果:
[java, hello, hello, hello, hello]
---
true
[hello, hello, hello]
------
[PHP, hello, hello]
----
PHP

  

LinkedList

底层是个链表格式

boolean add(Object o);

void addFrist(Object o);//添加到第一位

void addLast();//添加到最后一位

E   removeFrist();//移除第一位

E   removeLast();//移除最后一位

E  remove();//默认移除开头位

void  remove(int index);//移除指定索引的元素

boolean  remove(Object o);//移除指定元素

E  set(int index,E element)//修改指定索引的元素

E  get(int index);//获取指定索引的元素

E  getFrist();//获取第一位索引元素

E  getLast();//获取最后一位的索引元素

public class LinkedListTest {
public static void main(String[] args) {
LinkedList<String> list=new LinkedList<String>();
list.add("2");
list.add("3");
list.add("4");
list.add("5");
list.add("6");
list.add("7");
list.add("8");
list.add("9");
list.addFirst("1");
list.addLast("10");
System.out.println(list);
System.out.println("---");
list.remove();//默认移除索引第一位
System.out.println(list);
System.out.println("---");
list.remove(0);//移除指定位置的索引
System.out.println(list);
System.out.println("---");
list.removeFirst();//移除第一位索引元素
list.removeLast();//移除最后一位索引元素
System.out.println(list);
System.out.println("------");
System.out.println(list.getFirst());//获取第一位元素
System.out.println(list.getLast());//获取最后一位元素
System.out.println(list.get(0));//获取指定所以索引的元素
System.out.println("---");
list.set(0, "0");
System.out.println(list);
}
}

  

输出结果:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
---
[2, 3, 4, 5, 6, 7, 8, 9, 10]
---
[3, 4, 5, 6, 7, 8, 9, 10]
---
[4, 5, 6, 7, 8, 9]
------
4
9
4
---
[0, 5, 6, 7, 8, 9]

  

iterator迭代器

    作用:遍历集合

                                   Iterator接口---------ListIterator接口

       (所有集合做为它的实现类)     (只能被实现List接口的实现类使用)

      Iterator  在遍历的过程中不能进行添加数据  否则会报异常   但是可以移除元素(使用遍历器进行移除,在移除的过程中会修改器预期值)

    ( 当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。Exception in thread "main" java.util.ConcurrentModificationException)

public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("hello");
array.add("hello");
array.add("java");
array.add("hello");
array.add("hello");
Iterator<String> it = array.iterator();/Iterator遍历器没有添加功能
while (it.hasNext()) {
if (it.next().equals("java")) {
array.add("PHP");
}
} }
}

  并发异常:预期值与实际值不相符。所以产生异常。

    ListIterator 在迭代的过程可以进行添加操作(解决了并发性异常)

public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("hello");
array.add("hello");
array.add("java");
array.add("hello");
array.add("hello");
ListIterator<String> it = array.listIterator();
while (it.hasNext()) {
if (it.next().equals("java")) {
it.add("PHP");
}
}
for (String str : array) {
System.out.println(str);
} }
}

  

输出结果:
hello
hello
java
PHP
hello
hello

增强for

   for(初始化;判断条件语句;控制条件语句){

         循环体;

               }

for(类型  变量:集合对象){

循环体;

}

public class ArrayListTest {
public static void main(String[] args) {
ArrayList<String> array = new ArrayList<String>();
array.add("hello");
array.add("hello");
array.add("java");
array.add("hello");
array.add("hello");
for (String str : array) {
System.out.println(str);
} }
}

  

输出结果:
hello
hello
java
hello
hello

day06(Collection,List,ArrayList,LinkedList,iterator迭代器,增强for)的更多相关文章

  1. JavaSE Collections类 , Iterator迭代器 , 增强for循环

    Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...

  2. Collection集合框架与Iterator迭代器

    集合框架 集合Collection概述 集合是Java中提供的一种容器,可以用来存储多个数据 集合与数组的区别: 数组的长度固定,集合的长度可变 数组中存储的是同一类型的元素,可以存储基本数据类型值, ...

  3. java容器类1:Collection,List,ArrayList,LinkedList深入解读

    1. Iterable 与 Iterator Iterable 是个接口,实现此接口使集合对象可以通过迭代器遍历自身元素. public interface Iterable<T> 修饰符 ...

  4. 09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHashSet,TreeSet

    09 Collection,Iterator,List,listIterator,Vector,ArrayList,LinkedList,泛型,增强for,可变参数,HashSet,LinkedHas ...

  5. 设计模式(8) - 迭代器模式(iterator)- 实现ArrayList和linkedList的迭代器

    上周六就開始写这篇博客,之后一直耽误了.到前天才開始写.今天醒的早,就把这部分整理一下. 本文内容參考易学设计模式和马士兵的迭代器模式的视频. 了解迭代器模式一个作用就是让你在使用 迭代器遍历集合类的 ...

  6. Java——集合框架之ArrayList,LinkedList,迭代器Iterator

    概述--集合框架 Java语言的设计者对常用的数据结构和算法做了一些规范(接口)和实现(具体实现接口的类).所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection ...

  7. JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

    JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据 ...

  8. Java集合、Iterator迭代器和增强for循环整理

    集合 集合,集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.1      ArrayList集合存储元素 pac ...

  9. 18_集合框架_第18天_集合、Iterator迭代器、增强for循环 、泛型_讲义

    今日内容介绍 1.集合 2.Iterator迭代器 3.增强for循环 4.泛型 01集合使用的回顾 *A:集合使用的回顾 *a.ArrayList集合存储5个int类型元素 public stati ...

随机推荐

  1. 刚刚安装完nginx,服务启动,通过浏览器无法访问的问题

    查看Linux服务是否启动. ps -ef | grep nginx 解决办法:1,添加 80 段端口配置 firewall-cmd --zone=public --add-port=80/tcp - ...

  2. 内核线程和用户线程(SMP)

    用户级和内核级线程 用户级线程:任何应用程序都可以通过使用线程库设计成多线程程序.线程库是用于用户级线程管理的一个例程句,它包含用于创建和销毁线程的代码.在线程间传递消息和数据的代码.调度线程执行的代 ...

  3. 【Java】JVM(三)、Java垃圾收集器

    一.Minor GC.Major GC 和 Full GC Minor GC:清理新生代空间,当Eden空间不能分配时候引发Minor GC Major GC:清理老年代空间 Full GC:清理Ja ...

  4. How to create a Virtual Machine in SmartOS

    在SmartOS中,使用vmadm创建工具创建虚拟机. 此工具需要一个JSON有效负载,并使用输入JSON中指定的属性创建“kvm”或“joyent” brand zone. 正常输出是一系列单行JS ...

  5. Mysql 内部默认排序

    mysql默认的排序: https://forums.mysql.com/read.php?21,239471,239688#msg-239688 Do not depend on order whe ...

  6. vmware虚拟机桥接模式不能上网

    方法/步骤     首先我的主机的有线连接是正常的,如下:   但是我的虚拟机的网络连接模式为桥接模式,但是却上不了网,如下:   我们来确认下,我的虚拟机的网络模式,如下:   设置全部都是对的,但 ...

  7. spring jpa exists

    Subquery<A> subquery = criteriaQuery.subquery(A.class);Root<A> root1 = subquery.from(A.c ...

  8. springboot重定向

    参考https://www.cnblogs.com/kxkl123/p/7800967.html public String test() { return "redirect:/" ...

  9. SpringMVC的实现过程

    Spring Web MVC 处理Http请求的大致过程: 一旦Http请求到来,DispatcherSevlet将负责将请求分发.DispatcherServlet可以认为是Spring提供的前端控 ...

  10. C++中的浅拷贝和深拷贝

    浅拷贝(shallow copy)与深拷贝(deep copy)对于值拷贝的处理相同,都是创建新对象,但对于引用拷贝的处理不同,深拷贝将会重新创建新对象,返回新对象的引用字.浅拷贝不会创建新引用类型. ...