集合

集合

1、单列集合

1.1、list集合

A、ArraList--查询快,增删慢

B、LinkedList--查询慢,增删快

C、有序,可重复

 

1.2set集合

A、HashSet集合

B、无序,不可重复

1.3、Collection

A、list set 继承了  Collection接口

2、双列集合

2.1、Map集合

A、双列的集合

B、Map接口

3、Collection

A、boolean add(E e) --添加元素

B、void clear()  --清空集合

C、boolean contains(Object o) --判断集合中是否包含元素o

D、 boolean isEmpty()  --判断集合是否为空

E、boolean remove(Object o)--在集合中移除元素o

F、 int size()--获取集合的长度,类似于 数组lengthStringBuildr --> length()

4、迭代器

4.1、hasNext();--判断是否存在未遍历的元素

4.2、next();--返回当前元素

 

代码:

package com.itheima;

import java.util.ArrayList;

import java.util.Collection;

import java.util.Iterator;

 

public class CollectionDemo {

public static void main(String[] args) {

//多态  父类引用指向子类对象

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

 //<String> 这个是泛型  我向往这个集合中添加什么类型的元素,我就往这个尖括号内写什么数据类型 添加什么数据类型就只能存储什么数据类型

 //JDK1.7之后(包括1.7) 后面的泛型内容可以省略,自动沿用前面的泛型类型

 list.add("过年好啊");

 list.add("还学毛啊");

 list.add("等着回家吃饭呢");

 list.add("你学不好明年你吃啥?");

 

 //使用迭代器对集合进行遍历

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

 while(it.hasNext()){//用来判断集合中是否还存在未遍历的元素 存在返回true 不存在返回 false

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

// System.out.println(it.next());    NoSuchElementException没有这样的元素异常

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

 }

}

}

 

图解:

 

注意:迭代器遍历并不是直接遍历集合,是将集合中的元素复制一份出来进行迭代。并不是集合本身

5、List集合

5.1、代码

package com.itheima;

import java.util.ArrayList;

import java.util.Iterator;

import java.util.List;

public class ListDemo_01 {

public static void main(String[] args) {

/*

 * 增 添加  add

 * 删 删除  remove  

 * 改 修改  set

 * 查 查询  get

 *

 * 创建一个List集合  添加元素  sb110 sb10086 jfshsj sb122 jkfs  hsfksj

 * 然后遍历集合找出以sb开头的元素删除掉 并遍历输出剩下的元素

 */

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

list.add("sb110");

list.add("sb10086");

list.add("jfshsj");

list.add("sb122");

list.add("jkfs");

list.add("hsfksj");

for (int i = 0; i < list.size(); i++) {

String str = list.get(i);

if (str.startsWith("sb")) {

list.remove(i);

//为什么要减减

i--;

}

}

//去倒着遍历集合 完成这个操作

//遍历

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

while(it.hasNext()){

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

}

}

}

5.2、图例

 

注意:单独逆向使用列表迭代器是没有意义的,需要先正向遍历再逆向遍历才能逆向遍历出来

 

 

 

 

 

6、迸发修改异常

6.1、产生的原因

在迭代器循环中使用集合修改了集合中的内容,而迭代器中的内容没有修改,就会出现并发修改异常

 

6.2、错误信息

 

6.3解决方案

A、使用迭代器--可以使用ListIterator里面的add方法  使用迭代器自己的方法来修改集合

B、使用普通for循环--遍历集合,使用集合本身修改自己

C、ListIterator中操作集合的方法

(1)、add方法--添加,添加到当前next返回的元素的后面

(2)、remove方法--删除,删除的是next返回的这个元素

 

7、增强for

7.1、底层其实就是迭代器,也会出现并发修改异常

 

 

8、数据结构

8.1、栈,队列

 

8.2数组,链表

 

 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值