Java关于集合的思考

package com.example.demo;

import org.mockito.internal.matchers.Null;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/*
  void add(int index,Object element) :将元素element插入到list集合的index处
  boolean addAll(int index,Collection c):将集合元素c所包含的所有元素都插入到index处
  Object get(int index):返回集合index索引处的元素
  int indexOf(Object o):返回对象o在List集合中第一次出现位置的索引
  int lastindexOf(Object o):返回对象o在List集合中最后一次出现位置的索引
  Object remove(int index):删除并返回index索引处的元素
  Object set(int index,Object element) :将index索引处的元素替换成element对象,返回被替换的旧元素
  List subList(int fromIndex,int toIndex):返回从索引处fromIndex(包含)到索引处toIndex(不包含)处所有集合元素组成的子集合
  所有的List实现类都可以调用这些方法。
  JDK1.8增加了下面2个方法
  void replaceAll(UnaryOperator operator):根据operator指定的计算规则重新设置List集合所有元素
  void sort(Comparator c):根据Comparator参数对List集合的元素排列
 */

//A类重写equals,为了说明list判断2个对象相等,是根据equals比较的,true为相等
class A{
    public boolean equals(Object o){
        return true;
    }
}
public class ListTest {
    public static void main(String[] args) {
        List books  = new ArrayList();
        books.add("天文书");
        books.add("数学书");
        books.add(new String("语文书"));
        books.add(new String("生物书"));
        books.add(1,new String("英语书"));
        //普通for循环遍历
        System.out.println("普通for循环遍历");
        for (int i = 0; i < books.size(); i++) {
            System.out.println(books.get(i));
        }
        //for each循环遍历
        System.out.println("for each循环遍历");
        for (Object o:books) {
            System.out.println(o);
        }
        System.out.println("迭代器循环遍历");
        //迭代器循环
        Iterator iterator =  books.iterator();
        while(iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //ListIterator迭代器循环
        //boolean hasPrevious()返回该迭代器关联的集合是否还有上一个元素
        //Object previous() 返回该迭代器的上一个元素
        //void add(Object o):在指定位置插入一个元素
        ListIterator listIterator = books.listIterator();
        while (listIterator.hasNext()){
            System.out.println(listIterator.next());
        }
        List list = books.subList(1, 3);
        System.out.println("使用subList方法得到的新列表:"+list);
        /*
        使用new String创建字符串,与books原本的英语书是不一样的对象,
        为什么使用indexof方法还是返回1呢?因为List判断两个对象相等的标准是只要通过equals方法比较返回true即可。
         */
        System.out.println(books.indexOf(new String("英语书")));
        /*
            程序试图删除一个A对象,List将会调用该A对象的equals方法依次与集合元素进行比较,如果
            该equals方法以某个集合对象作文参数时返回true,List将会删除这个元素,
            因为A类重写了equals方法,该方法总是返回true,所以每次List集合中删除A对象时,
            总是删除List集合中第一个元素。
         */
        books.remove(new A());
        System.out.println(books);


        /*
        演示sort方法 使用lambda表达式
         */
        books.sort(((o1, o2) -> ((String)o1).length() - ((String)o1).length()));
        System.out.println(books);
    }
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值