Java——log4j日志处理和List集合:ArrayList和LinkedList , 泛型集合 , 泛型方法其他用法

本文介绍了Java中log4j的日志处理,包括配置日志输出级别和使用log4j.properties文件。接着讨论了集合的优特点,特别是List接口中的ArrayList,详细阐述了其存储扩容机制。最后讲解了泛型集合的应用,强调了泛型只支持引用类型,用于限制集合存储的数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.log4j日志处理

步骤:
1.在项目中引入jar包
2.创建log4j.properties 文件(src)
3.配置日志信息

日志输出级别:

fatal > error > warn > info > debug

log4j.properties :
log4j.rootLogger = debug,stdout,D,E

### 输出信息到控制抬 ###
log4j.appender.stdout = org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target = System.out
log4j.appender.stdout.layout = org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern = [%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l%n%m%n

### 输出DEBUG 级别以上的日志到=E://logs/error.log ###
log4j.appender.D = org.apache.log4j.DailyRollingFileAppender
log4j.appender.D.File = logs/log.log
log4j.appender.D.Append = true
log4j.appender.D.Threshold = DEBUG 
log4j.appender.D.layout = org.apache.log4j.PatternLayout
log4j.appender.D.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

### 输出ERROR 级别以上的日志到=E://logs/error.log ###
log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
log4j.appender.E.File =logs/error.log 
log4j.appender.E.Append = true
log4j.appender.E.Threshold = ERROR 
log4j.appender.E.layout = org.apache.log4j.PatternLayout
log4j.appender.E.layout.ConversionPattern =  %d{yyyy-MM-dd HH:mm:ss} %l %F %p %m%n

另还需要在类中

package com.mucfc;
import org.apache.log4j.Logger;
/**
 *@author linbingwen
 *@2015年5月18日9:14:21
 */
public class Test {
	private static Logger logger = Logger.getLogger(Test.class);  
 
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
        // System.out.println("This is println message.");  
 
        // 记录debug级别的信息  
        logger.debug("This is debug message.");  
        // 记录info级别的信息  
        logger.info("This is info message.");  
        // 记录error级别的信息  
        logger.error("This is error message.");  
    }  
 
}

日志文件结果:
在这里插入图片描述
控制台结果:
在这里插入图片描述

2.集合

集合优点:

优势之一即可动态扩展集合长度,即所包含的成员个数不固定,可以随着不断地添加、移除进行动态空间扩展。

优势之一,可存储不同类型的数据。

在这里插入图片描述
Collection ->List , Set 均为接口
在这里插入图片描述
由于所有子类都实现了父类的方法,调用方式都一样,作用而一样

List接口主要方法:

在这里插入图片描述

 public static void main(String[] args) {
        List dogs=new ArrayList();
        dogs.add("d1");
        dogs.add("d2");
        dogs.add(3);   		//没有类型限制
        for (Object obj:dogs) {
            System.out.println(obj);
        }
结果:

在这里插入图片描述

1)ArrayList存储扩容机制

在这里插入图片描述
ArrayList是数据连续存储,可变数组,可根据下表快速读取数据

list.get(0)

ArrayList,默认开辟10个存储空间,当空间用尽时,会动态扩容,扩容量为:当前长度/2 取整;
在这里插入图片描述

================================================

LinkedList双链表实现了List和Deque接口。 实现所有可选列表操作,并允许所有元素(包括null )。

3.泛型集合

因为List可以存各种类型数据,所以很容易出现下面错误

List的get(int index)方法获取元素出错
通过泛型约束了集合类型或者类和接口的类型

    public static void main(String[] args) {
        List<String> dogs=new ArrayList<String>();
        dogs.add("d1");
        dogs.add("d2");
        dogs.add("d3");
        dogs.set(0,"d");
        dogs.add(1); 		//编译出错 ,类型不符
        dogs.add(0,"d4");
        System.out.println(dogs.get(1));
        for (Object obj:dogs) {
            System.out.println(obj);
        }

泛型不支持基础类型,只支持引用类型

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值