13.Java语言Collection集合、泛型总结

版权声明:原创,转载请说明,谢谢! https://blog.csdn.net/ajia5216/article/details/82531571

Collection集合

1.集合:

a)集合是一种容器,用来存储数据

b)集合的长度不固定,数组的长度固定

c)Java中定义了很多集合类,用于存储不同数据结构的数据

d)有些数据结构会导致增删慢,改查快,有些相反

e)Java中集合体系图

2.Collection集合:

包名:java.util.Collection

单列集合类的根接口,用于存储一些符合某种规则的元素。

常用方法:

扫描二维码关注公众号,回复: 3094705 查看本文章

1.增加

a).把给定的元素添加到集合中 public boolean add(E e){}

ArrayList<String> list = new ArrayList<>();
list.add("aaaaa");

2.删除

删除集合中的元素

a).清空集合中的所有元素,public void clear() {}

ArrayList<String> list = new ArrayList<>();

list.clear();

b).删除指定内容 public boolean remove(Object o){}

ArrayList<String> list = new ArrayList<>();

list.remove("ce");

3.判断

a).判断集合是否为空, public boolean isEmpty() {}

ArrayList<String> list = new ArrayList<>();

list.isEmpty();

b).判断集合中是否包含给定的元素public boolean contains(Object o) {}

ArrayList<String> list = new ArrayList<>();

list.contains("ce");

4.获取

a)获取集合中元素的个数,public int size() {}

ArrayList<String> list = new ArrayList<>();

list.size();

b)把集合中的元素,存储到数组中,public Object[] toArray() {}

ArrayList<String> list = new ArrayList<>();

list.toArray();

Iterator迭代器

Iterator接口,java.util.Iterator

public Iterator iterator() : 获取集合对应的迭代器,用来遍历集合中的元素的。

1.Iterator迭代器的使用:

public class CollectionTest {

    public static void main(String[] args) {

        ArrayList<String> list = new ArrayList<>();

        list.add("aaaaaa");

        //获得迭代对象

        Iterator<String> it = list.iterator();

        System.out.println(it.next());

    }

}
 
aaaaaa

2.Iterator接口常用方法:

a).public E next() :返回迭代的下一个元素

b).public boolean hasNext() :如果仍有元素可以迭代,则返回 true。

 

使用next()方法,当没有下一个元素的时候,再次调用就会抛出

java.util.NoSuchElementException没有集合元素的错误

       所以会配合hasNext()方法使用,当有元素时才获取下一个元素

1.实现原理

内部采用指针的方式跟踪集合元素,在没有调用next()方法之前,指针指向集合之前,当调用方法后,返回集合的第一个元素并且指针向后移动一个元素。

增强for

增强for循环,也叫foreach循环,专门用来遍历数组和集合中的元素,它的内部原

理其实是个Iterator迭代器,所以在遍历的过程中,不能对集合中的元素进行增删操作

1.for-each循环示例:

public static void main(String[] args) {

    //定义一个数组

    int[] arrInt = {1,2,123,12,44,23,432};

    //使用foreach循环遍历输出

    for (int k:arrInt) {

        System.out.println(k);

    }



    //定义一个集合

    ArrayList<String> list = new ArrayList<>();

    list.add("aaa");

    list.add("bbb");

    list.add("ccc");

    //遍历输出

    for (String str:list) {

        System.out.println(str);

    }

}

 

泛型

可以在类或方法中预支地使用未知的类型。一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型

1.泛型的好处:

a)当存储不同类型的数据到一个集合中的时候,可以自动检测错误。

b)避免了类型强转的麻烦

2.泛型的定义与使用:

a)含有泛型的类:

修饰符 class 类名<代表泛型的变量> { }

例如,API中的ArrayList集合:

class ArrayList <E>{

      public boolean add(E e){ }

public E get(int index){ }

....

 }

E是未知的一种数据类型 未来传递什么就是什么类型 

使用格式:

       创建对象的时候确定泛型的类型

2.含有泛型的方法

修饰符 返回值类型 方法名(参数){ }

例如:

public class MyGenericMethod {

public <MVP> void show(MVP mvp) {

System.out.println(mvp.getClass());

 }

public <MVP> MVP show2(MVP mvp) {

return mvp;

}

}

              使用格式:

                     调用方法时确定泛型的类型

3.含有泛型的接口:

修饰符 interface接口名<代表泛型的变量> { }

public interface MyGenericInterface<E>{

public abstract void add(E e);

public abstract E getE();

}

              使用格式:

1.定义类的时候确定泛型的类型

2.始终不确定泛型的类型,直到创建对象时,确定泛型的类型

4.泛型的通配符:

可以接收具有任何泛型的集合;<?>

1.泛型的上限     <? extends 类名>

参数只能接收,此类或者此类子(孙)类的集合

2.泛型的下限     <? super 类名>

参数只能接收,此类或者此类父(爷)类的集合

猜你喜欢

转载自blog.csdn.net/ajia5216/article/details/82531571