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,元素间有一定自然顺序(数值类型默认:从小到大 字符串按照字典)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值