for(T item : expr) 怎么判断循环到了最后一个
时间: 2024-03-10 12:46:13 浏览: 16
在使用 for-each 循环时,可以通过 Java 提供的 Iterator 接口来判断是否已经循环到了最后一个元素。具体实现方式如下:
```java
Iterator<T> iter = expr.iterator();
while (iter.hasNext()) {
T item = iter.next();
// 处理 item
if (!iter.hasNext()) {
// 已经到达最后一个元素
// 在这里进行相应的处理
}
}
```
需要注意的是,在使用 for-each 循环时,不能直接判断循环变量是否为 null 或者长度是否为 0,这种方式并不可靠。推荐使用 Iterator 接口的 hasNext() 方法来进行判断。
相关问题
shelll 使用expr 判断文件是一个压缩包文件
使用`expr`命令来判断文件是否为压缩包文件也是可以的。`expr`命令可以用来进行字符串匹配操作。以下是一个示例脚本:
```
#!/bin/bash
filename="example.tar.gz" # 要判断的文件名
if expr "$filename" : '.*\.zip$' > /dev/null; then
echo "This is a zip file."
elif expr "$filename" : '.*\(\.gz\|\.tar\|\.tar\.gz\|\.tgz\)$' > /dev/null; then
echo "This is a compressed file."
else
echo "This is not a compressed file."
fi
```
在上面的代码中,我们使用`expr`命令的正则表达式匹配功能来判断文件名是否符合压缩包文件的后缀名。如果匹配成功则输出对应的信息,否则输出不是压缩包文件的信息。
需要注意的是,`expr`命令的正则表达式语法有一些特殊符号需要转义,例如圆括号和竖线。在上面的代码中,我们使用了`\(\)`来表示圆括号,`\|`来表示竖线。另外,为了避免输出匹配到的字符串,我们使用了重定向来将输出重定向到/dev/null。
需要注意的是,使用`expr`命令时需要注意正则表达式的语法和转义符号,不当的使用可能会导致匹配失败。
shelll 使用expr 判断文件不是一个压缩包文件
可以使用以下命令判断文件不是一个压缩包文件:
```
if [ $(expr "$(file -b $file)" : '.*compressed data.*') -eq 0 ]; then
echo "$file is not a compressed file"
fi
```
其中,`file -b $file` 命令可以获取文件类型,如果输出包含 `compressed data`,则说明该文件是一个压缩包文件。使用 `expr` 命令匹配输出结果中是否包含 `compressed data`,如果不包含,则说明该文件不是一个压缩包文件,执行相应的操作即可。