集合复习2

集合的遍历

集合提供了统一的遍历方式:迭代器模式

Iterator iterator()

该方法可以获取用于遍历当前集合的迭代器实现类

java.util.Iterator 迭代器接口

不同的集合都提供了一个迭代器实现类用于遍历当前集合元素,迭代器接口上规定了遍历集合的

相关方法,使用迭代器遍历集合的步骤遵循:问->取->删的步骤进行,其中删除不是必要操作。

Collection c = new ArrayList();
c.add("one");
c.add("#");
c.add("two");
c.add("#");
c.add("three");
c.add("#");
c.add("four");
c.add("#");
c.add("five");
System.out.println(c);//[one, #, two, #, three, #, four, #, five]

Iterator it = c.iterator();

/*
 boolean hasNext()
 使用迭代器询问是否还有下一个元素可以迭代。迭代器默认开始的位置是集合第一个
 元素之前,因此第一次调用就是询问是否有第一个,依此类推。

 E next()
 使迭代器向后移动并获取下一个元素。
 */
 while(it.hasNext()){
 String e = (String)it.next();
 if("#".equals(e)){
/*
 使用迭代器遍历集合元素的过程中不要通过集合的add,
 remove这样的操作增删元素,否则迭代器会抛出异常:
 java.util.ConcurrentModificationException
 */
 /*
  迭代器提供了一个remove方法,删除迭代器当前位置的集合元素
  */
  it.remove();
   }
  }
 System.out.println(c);//[one, two, three, four, five]

List集合

List接口继承自Collection,是可以存放重复元素且有序的集合。

常用实现类:

java.util.ArrayList:内部使用数组实现,查询性能更好。

java.util.LinkedList:内部使用链表实现,增删性能更好,收尾增删性能最佳。

对性能无要求时通常用ArrayList

List<String> list = new LinkedList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add("five");
System.out.println(list);//[one, two, three, four, five]
/*
    E get(int index)
    获取指定下标出对应的元素
*/
String str = list.get(2);//获取集合中第三个元素
System.out.println(str);//three
/*
 E set(int index,E e)
 将给定元素设置到指定位置上,返回值为该位置被替换的元素。
*/
System.out.println(list);//[one,two,three,four,five]
String old = list.set(1,"six");//返回值为被替换的"two"
System.out.println(list);//[one,six,three,four,five]
System.out.println(old);//two
//将集合反转
Collections.reverse(list);
System.out.println(list);//[five,four,three,six,one]

List集合重载了一对add和remove方法

List<String> list = new ArrayList<>();
list.add("one");
list.add("two");
list.add("three");
list.add("four");
list.add("five");
System.out.println(list);//[one,two,six,three,four,five]
/*
  void add(int index,E e)
  将给定元素插入到指定位置
*/
list.add(2,"six");
System.out.println(list);//[one, two, six, three, four, five]
/*
  E remove(int index)
  删除并返回指定位置上的元素
*/
String e = list.remove(4);
System.out.println(list);//[one, two, six, three, five]
System.out.println("被删除的元素是:"+e);//被删除的元素是:four

List subList(int start , int end)获取指定范围的子集

List<Integer> list = new ArrayList<>();
for(int i=0;i<10;i++){
    list.add(i);
}
System.out.println(list);//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
List<Integer> subList = list.subList(3,8);
System.out.println(subList);//[3, 4, 5, 6, 7] 含头不含尾
//将子集每个元素扩大十倍
 for(int i=0;i<subList.size();i++){
    int e = subList.get(i);
    e = e * 10;
    subList.set(i,e);
}
System.out.println(subList);//[30,40,50,60,70]
/*
  对子集的操作就是对原集合对应的操作
*/
System.out.println(list);//[0, 1, 2, 30, 40, 50, 60, 70, 8, 9]
//删除集合中的2-8这些元素
list.subList(2,9).clear();
System.out.println(list);//[0, 1, 9]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值