java List siez方法体
时间: 2023-11-28 18:51:07 浏览: 12
List 接口中的 size() 方法用于获取列表中元素的数量,方法体如下:
```
public int size() {
return size;
}
```
在实现类中,size 变量记录了列表中元素的数量,当调用 size() 方法时,直接返回 size 变量即可。
相关问题
java List siez方法怎么实现的
Java中的List接口定义了一个`size()`方法,用于返回列表中元素的数量。该方法的具体实现取决于具体的List实现类。
以`ArrayList`为例,它在内部维护了一个数组来存储元素,`size()`方法直接返回该数组的长度,即列表中元素的数量。
以`LinkedList`为例,它在内部使用链表来存储元素,`size()`方法则需要遍历整个链表来统计元素数量,具体实现如下:
```
public int size() {
return size;
}
```
其中`size`是一个私有变量,记录了元素的数量。每次添加或删除元素时,都会更新该变量的值,并在`size()`方法中返回。
void USART1_IRQHandler(void) //串口中断处理函数 { if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { buf[buf_size++] = USART_ReceiveData(USART1); if (buf_size >= 2) { if (buf[0] == 0xAA && buf[1] == 0xBB) //接收到帧头 { //接收到帧尾 if (buf[buf_size] == 0xCC && buf[buf_size-1] == 0xDD) { //此处为数据包处理逻辑 buf_size = 0; memset(buf,0,BUF_SIEZ); } } else { buf_size = 0; memset(buf,0,BUF_SIZE); } } if(buf_size >= BUF_SIZE) { buf_size = 0; memset(buf,0,BUF_SIZE); } } } 为我解读一下上述代码
上述代码是一个串口中断处理函数,用于处理USART1接收中断。以下是对代码的解读:
1. `if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)`:判断是否接收到了USART1的RXNE(接收寄存器非空)中断。如果接收到中断,执行以下代码。
2. `buf[buf_size++] = USART_ReceiveData(USART1);`:将接收到的数据存储到缓冲区`buf`中,并增加`buf_size`计数器。
3. `if(buf_size >= 2)`:检查缓冲区中的数据是否大于等于2个字节。
4. `if (buf[0] == 0xAA && buf[1] == 0xBB)`:检查接收到的数据是否符合帧头的条件(0xAA和0xBB)。
5. `if (buf[buf_size] == 0xCC && buf[buf_size-1] == 0xDD)`:检查接收到的数据是否符合帧尾的条件(0xCC和0xDD)。
6. 数据包处理逻辑:如果接收到完整的一帧数据(帧头和帧尾条件都满足),则执行数据包处理逻辑。在该逻辑中,可以对接收到的数据进行相应的处理操作。
7. 重置缓冲区和buf_size:在处理完一帧数据后,将buf_size计数器重置为0,并使用`memset()`函数将缓冲区清零。
8. 如果缓冲区中的数据超过了BUF_SIZE(缓冲区大小),则重置缓冲区和buf_size,防止缓冲区溢出。
该中断处理函数的主要功能是接收串口数据,并根据预定义的帧头和帧尾来判断是否接收到完整的一帧数据。如果接收到完整的一帧数据,则执行数据包处理逻辑。否则,重置缓冲区以准备接收下一帧数据。