4

我有小代码,我必须添加条件才能获得正确的输出。

如果 mimeList 中的元素是 Last 然后转到else部分。或到if

此 ArrayList 中始终有 1 个元素。

(如果它只有一个元素,则意味着它是最后一个元素。)

for (int i = 0; i < mimeList.size(); i++) {
    StringBuffer sb = new StringBuffer();

    if () {
        queryString = sb.append(queryString).append(key)
        .append("=").append(mimeList.get(i)).append(" or ").toString();
    }else{
        queryString = sb.append(queryString).append(key)
        .append("=").append(mimeList.get(i)).toString();
    }
}
4

8 回答 8

10

关于你的问题的标题:

在Java中获取ArrayList中的第一个和最后一个元素

它应该很简单:

mimeList.get(0); // To get first
mimeList.get(mimeList.size()-1); //to get last

关于您的if情况:

if(!(i==0 || i==mimeList.size()-1))

正如你所说的那样:

如果 mimeList 中的元素是第一个或最后一个元素,它将进入 else 条件,否则在 if 条件下

!在if条件下使用。否则下面很酷:

if((i>0) && (i!=mimeList.size()-1))
于 2012-08-06T13:09:58.837 回答
5

没有大量检查的更简单的方法是使用分隔符,它一开始是空的。

StringBuilder sb = new StringBuilder();
String sep = "";
for (String s : mimeList) {
    sb.append(sep + key + "=" + s);
    sep = " or ";
}
于 2012-08-06T13:29:02.903 回答
2

像这样的东西应该可以工作:if ((i > 0) && (i < mimeList.size() - 1)). 由于在基于 0 的 Java 集合中,第一个元素将在 location0并且最后一个元素将在 at Collection.Size - 1,因为访问第Collection.Sizeth 位置将导致越界异常。

于 2012-08-06T13:08:48.353 回答
2

根据我从您的问题中收集到的信息,您需要以下内容:

ArrayList<Foo> foos = fooGenerator.generateFoos();

for(int i = 0; i < foos.size(); i++) {
    if(i != (foos.size() - 1)) {
        System.out.println("Front elements of ArrayList");
    }
    else {
        System.out.println("Last element of ArrayList!");
    }
}
于 2012-08-06T13:12:14.367 回答
2
ArrayList<int> foos = ArrayList<int>();

第一个是

foos.get(0);

最后是

foos.get(foo.size - 1);
于 2016-12-19T16:29:41.057 回答
1

考虑到iInteger里面ArrayList.

if ((i > 0) && (i < mimeList.size() - 1))
于 2012-08-06T13:10:09.433 回答
0

尝试类似的东西

if(i == 0 || i == mimeList.size() - 1)

希望有帮助!

于 2012-08-06T13:08:05.623 回答
0

您的代码中几乎已经有了答案:

您从数组中的第一个元素循环到最后一个元素。

第一个:有索引 0,最后一个:有索引(大小 - 1)

这会导致以下情况:

if ((i > 0) && (i < mimeList.size() - 1))
于 2012-08-06T13:09:02.413 回答