Collection接口

简介: Collection接口

迭代器 Iterator

Collection接口下遍历集合(ArrayList , LinkedList , Vector)使用的普通for循环或者foreach,除此之外List在API还提供了一种新的迭代器Iterator

注意:迭代器在运行时不能使用集合中的remove()方法,会发生异常

foreach本质上也是用迭代器实现的,所以foreach也不能用remove()方法删除元素

优点:就是提供一种方法,对一个容器对象中的各个元素进行访问,而且程序员不需要知道底层结构

ArrayList<String> a = new ArrayList<String>();
a.add("sds");
a.add("sfd");
a.add("sgf");
a.add("shg");
Iterator<String> iterator = a.iterator();
while (iterator.hasNext()){
    String s =  iterator.next();
    System.out.println(s);
}


List接口:有序集合

list接口概念:一个有序集合(也被称之为序列),此接口的用户在列表中的每个元素被插入的地方都有精准控制,用户可以通过他们的整数搜索(在列表中的位置访问元素),并在列表中搜索元素

List接口是:ArrayList、LinkedList、Vector类的父接口

List接口提供了特殊的迭代器,称之为listIterator,该迭代器允许元素的插入和替换

List集合的有序接口和实现类

list接口的实现类:元素有序(索引)、允许null元素、允许重复元素、jdk1.5之后支持泛型、可以在指定位置上插入元素、通过索引访问元素


ArrayList:线程不同步,ArrayList是可变动态数组数据结构,对于查询和修改ArrayList的效率更高,它的容量自动增加初始化10

重要的方法:

ArrayList<String> list = new ArrayList<String>();
list.add("das"); //添加的方法,返回值是布尔
list.add(1,"dasdsa");//将指定元素插入到指定位置 返回值void
list.lastIndexOf("dsa");//返回对象在集合中最后一次出现的索引位置,没有就是-1
list.indexOf("dsa");//返回对象在集合中出现的位置没有就是-1
list.contains("fddf");//如果此列表包含此元素就返回true 返回的是布尔
list.set(0,"fdf");//修改此列表中某个索引上的元素
list.get(2);//返回此列表中索引处的元素
list.remove(1);//删除方法可以写索引,也可以写要删除的元素
list.size();//返回此列表的元素数


list转数组:toArray()

ArrayList<String> list = new ArrayList<String>();
list.add("das");
list.add("das");
list.add("das");
String[] strings = list.toArray(new String[0]);
for (int i = 0; i < strings.length; i++) {
    System.out.println(strings[i]);
}


isEmpty() 判断集合中是否有元素

list.isEmpty();//判断集合中是否有元素,返回值是布尔


Linkedlist:线程不同步,基于链表数据结构,对于插入和删除Linkedlist效率更高,他的容量是自动增加没有初始化大小

Linkedlist提供的房和和Arraylist的方法基本相同,但是Linkedlist此外增加了很多方法

LinkedList<String> list = new LinkedList<String>();
list.addFirst("fsd");//将指定元素插入此列表的开头
list.addLast("dasd");//将指定元素插入此列表的结尾
list.getFirst();//返回此列表的第一个元素
list.getLast();//返回此列表的最后一个元素
list.removeFirst();//删除此列表的第一个元素
list.removeLast();//删除此列表的最后一个元素


队列:这个集合的add方法是先进先出,

堆栈操作

list.push("das");//堆栈操作:先进后出
list.peek();//获取但不移除此列表的第一个元素
list.poll();//当列表没有元素访问该方法返回null
list.pop();//基于栈构建元素,当栈中没有元素时,调用该方法会发生异常


Vector:线程同步安全、可变动态数组结构、它的容量自动增加大小为10、方法和Arraylist一样

Set接口无序集合:不包含重复的元素,最多只能有一个空元素

HashSet:支持泛型,不同步,元素不可以重复,可以为null,不保证set迭代顺序,

HashSet底层结构是哈希表,他如何保证元素唯一性:

HashCode和equals方法在说明:1、hashcode相等,两个对象不一定相等,需要equals再进行判断

2、hashcode不相等两个对象一定不相等

3、equals为true,则hashcode肯定一样

4、equals为false,则hashcode不一定一样,也有可能一样

如果哈希值不同(hashcode)就添加到元素中,如果哈希值相同那么用equals进行在判断

java对象如果要比较是否相等,则需要重写equals和hashcode方法,将两个对象加入HashSet

instanceof严格来说是java中的一个双目运算符,用来测试一个对象是否是一个类的实例


TreeSet实现类:支持泛型,不同步,元素可以重复,值不能为为null,元素间有一定自然顺序(数值类型默认:从小到大 字符串按照字典)


相关文章
|
1月前
|
Java
Collection接口详解
Collection接口详解
|
6月前
|
存储 算法 Java
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
java集合框架------Collection接口,List接口与实现类,Set接口与实现类
|
8月前
|
存储 算法 Java
Java Collection接口的子接口之Set接口及其Set接口的主要实现类HashSet,LinkedHashSet,TreeSet详解(一)
Java Collection接口的子接口之Set接口及其Set接口的主要实现类HashSet,LinkedHashSet,TreeSet详解
46 0
|
8月前
|
Java
Java Collection接口的子接口之Set接口及其Set接口的主要实现类HashSet,LinkedHashSet,TreeSet详解(二)
Java Collection接口的子接口之Set接口及其Set接口的主要实现类HashSet,LinkedHashSet,TreeSet详解
67 0
|
8月前
|
Java
Java集合框架Collection接口
Java集合框架是Java编程中的一个非常重要的部分,提供了一组用于处理数据集合的接口和类。其中Collection接口是Java集合框架的基础接口之一,定义了一些基本的集合操作,包括添加元素、删除元素、遍历集合等。在这里,我将为您详细介绍Java集合框架中的Collection接口。 Collection接口是Java集合框架中的基础接口,定义了一些基本的集合操作,包括添加元素、删除元素、遍历集合等。在Java中,Collection接口是一个顶层接口,它有两个主要的子接口:List和Set。其中,List是一个有序的集合,可以包含重复的元素;而Set是一个不重复的集合,元素是无序的。
42 0
|
8月前
|
存储 Java
Java集合框架Set接口
Java集合框架中的Set接口是一种不允许包含重复元素的集合。Set接口继承自Collection接口,因此它具有Collection接口定义的所有方法。同时,Set接口还具有自己的特殊方法,例如:添加元素、删除元素、判断元素是否存在等。 Set接口的实现类包括HashSet、LinkedHashSet和TreeSet。 HashSet是基于哈希表实现的Set集合,它不保证集合中元素的顺序。由于哈希表的实现机制,HashSet的添加、删除和查找操作都具有很好的性能,时间复杂度为O(1)。 LinkedHashSet是基于链表和哈希表实现的Set集合,它保证集合中元素的插入顺序。在插入元素时,它
52 0
|
10月前
|
API
迭代器 Collection以及List接口
迭代器 Collection以及List接口
46 0
|
Java 索引 容器
27 java集合之collection接口、子接口及实现类
集合概念:像数组一样是java的一个容器;和数组不同的是数组只能存同类型的数据,且长度定义之后就不可变,集合不仅可以存多种类型的数据,而且还提供了增、删、改、查的方法;
128 0
|
存储
List接口
List接口
50 0
List接口