3.2.1 List接口

Collection—子接口-List接口


List基本概述:
  1. List接口是Collention接口的子接口
  2. List集合类中元素有序(添加顺序和取出的顺序一致),且可重复
  3. 每个元素都有对应的顺序索引,即支持索引

List接口常用方法:
    1. void add(int index, Object ele): 在index位置插入ele元素
    2. boolean addAll(int index, Collection eles): 从index位置开始将eles中的所有元素添加进来
    3. Object get(int index) :获取指定index位置的元素
    4. int indexOf(Object obj) :返回obj在集合中首次出现的位置 ,如果没有就返回-1
    5. int lastIndexOf(Object obj) :返回obj在当前集合中末次出现的位置 ,如果没有就返回-1
    6. Object remove(int index) :移除指定index位置的元素,并返回此元素注意:Collection中的remove是删除某个元素,这里是方法的重载而不是方法的重写 ,因为方法名一样,但形参类型不一样,在List中也可以按照对象去删除
    7. Object set(int index, Object ele) :设置指定index位置的元素为ele
    8. List subList(int fromIndex, int toIndex) :返回从[fromIndex到toIndex )位置的子集合,本身的list没有变化

List三种遍历方式 (ArrayList,LinkedList,Vector)
//        List list = new ArrayList();
//        List list = new Vector();
        List list = new LinkedList();
        
        list.add("lucy");
        list.add(12);
// 遍历器
        Iterator iterator =list.iterator();
        while (iterator.hasNext()) {
            Object next =  iterator.next();
            System.out.println(next);
        }
// 增强for
        for (Object o :list) {
            System.out.println(o);
        }
// p
        for (int i = 0; i <list.size(); i++) {
            System.out.println(list.get(i));

        }

List排序练习-由book的销量 从小到大排序


使用List的实现类添加三本图书,并遍历

1.按照价格排序从低到高(使用冒泡排序)

2.要求使用ArrayList 实现

  • 实现:

  •     public static void main(String[] args) {
            List list = new ArrayList();
            list.add(new Book("红楼梦", "曹雪芹", 100));
            list.add(new Book("水浒传","施耐庵",120));
            list.add(new Book("女孩","九把刀",80));
    
            System.out.println("排序前: ");
            printList(list);
    
            System.out.println("排序后: ");
            sort(list);
            printList(list);
    
    
        }
        // 打印输出
        public static void printList(List list){
            Iterator iterator = list.iterator();
            while (iterator.hasNext()) {
                Object next =  iterator.next();
                System.out.println(next);
            }
        }
    
        // 冒泡排序
        public static void sort(List list){
            int listSize = list.size();
            for (int i = 0; i < listSize; i++) {
                for (int j = 0; j < listSize-1-i; j++) {
    
                    // 取到book类
                    Book book1 = (Book) list.get(j);
                    Book book2 = (Book) list.get(j+1);
    
                    // 比较交换  这里用List接口的set(int index,Object o)方法;
                    if (book1.getOutNum()>book2.getOutNum()){
                        list.set(j,book2);
                        list.set(j+1,book1);
    
                    }
                }
            }
    
        }
    }
    
  • Book类:

  • class Book{
        private String bookName;
        private String name;
        private int outNum;
    
        public Book(String bookName, String name, int outNum) {
            this.bookName = bookName;
            this.name = name;
            this.outNum = outNum;
        }
    
        public String getBookName() {
            return bookName;
        }
    
        public String getName() {
            return name;
        }
    
        public int getOutNum() {
            return outNum;
        }
    
        public void setBookName(String bookName) {
            this.bookName = bookName;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setOutNum(int outNum) {
            this.outNum = outNum;
        }
    
         @Override
         public String toString() {
             return "作者: " +name+"\t\t书名:" +bookName+"\t\t销量:" +outNum;
         }
     }
    
在 EasyExcel 3.2.1 版本中,你需要通过实现 WriteCellStyle 接口来定制表头样式,具体实现如下: 1. 首先定义一个继承了 WriteCellStyle 接口的样式处理器类,例如: ``` public class CustomCellStyleHandler implements WriteCellStyle { @Override public void writeCellStyle(Cell cell, Head head, Integer integer, Integer integer1, WriteCellStyle writeCellStyle) { // 如果是第一列,设置字体颜色为红色 if (integer == 0) { Font font = new Font(null, true, false, false); font.setColor(Font.COLOR_RED); writeCellStyle.setWriteFont(font); } else { // 否则设置字体颜色为黑色 Font font = new Font(null, false, false, false); font.setColor(Font.COLOR_NORMAL); writeCellStyle.setWriteFont(font); } } @Override public void setColumnWidth(Integer integer, Integer integer1, Integer integer2) { } @Override public void setRowHeight(Integer integer, Short aShort) { } } ``` 2. 在写数据时,使用定义好的样式处理器类来设置表头样式,例如: ``` // 定义表头 List<List<String>> head = new ArrayList<>(); List<String> headRow1 = new ArrayList<>(); headRow1.add("姓名"); headRow1.add("年龄"); headRow1.add("其他"); head.add(headRow1); // 定义数据 List<List<Object>> data = new ArrayList<>(); List<Object> dataRow1 = new ArrayList<>(); dataRow1.add("张三"); dataRow1.add(18); dataRow1.add("其他信息"); data.add(dataRow1); // 写出 Excel EasyExcel.write(fileName, DemoData.class) .head(head) .sheet("sheet1") .registerWriteHandler(new CustomCellStyleHandler()) .doWrite(data); ``` 这样,当你使用 EasyExcel 写出 Excel 时,表头中的第一列字体颜色就会被设置为红色,后面的字体颜色就会被设置为黑色。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值