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

4

我有一小段代码,需要添加条件以获得正确的输出。

如果mimeList中的元素是最后一个,则转到else部分。 或者转到if部分。

这个ArrayList中总是只有一个元素。

(如果它只有一个元素,那么它就是最后一个元素。)

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();
    }
}

1
如果 (!(i == 0 || i == mimeList.size()))? - Anthony Grist
很难理解你具体在询问什么... - auser
@auser如果是空的,那么他想要代码的位置在哪里? - Joshua
2
@AnthonyGrist i 不能等于 mimeList.size() - Baz
抄作业吗?将StringBuffer移出循环。摆脱那个丑陋的冗余。检查一下键之间是否有空格。第一和第二列表项之间的“或”怎么样?祝好运。 - mgaert
当您可以使用StringBuilder时,请不要使用StringBuffer。 - Peter Lawrey
8个回答

11

关于你的问题标题:

在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))

不错,看起来是一种非常简单的方式..! - Ved

5
使用一个初始为空的分隔符是一种更简单的方法,可以避免大量的检查。
StringBuilder sb = new StringBuilder();
String sep = "";
for (String s : mimeList) {
    sb.append(sep + key + "=" + s);
    sep = " or ";
}

我已经编辑了我的问题。请检查并帮忙。 如果mimeList中的元素是Last,则进入else部分。否则进入if部分。 - GameBuilder
你只需要在键值对之间使用 " 或者 "。这是最简单的方法。你不需要使用 if,也不需要重复代码。 - Peter Lawrey

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!");
    }
}

2

以下代码应该可以工作:if ((i > 0) && (i < mimeList.size() - 1))。由于Java集合是以0为基础的,第一个元素将位于位置0,最后一个元素将位于Collection.Size - 1,因为访问Collection.Size位置会导致越界异常。


2
ArrayList<int> foos = ArrayList<int>();

首先是

foos.get(0);

最后一项是什么。
foos.get(foo.size - 1);

1

考虑到 ArrayList 中的 iInteger 类型。

if ((i > 0) && (i < mimeList.size() - 1))

从技术上讲,i 是一个 int(原始类型),而不是一个 Integer(对象)。 - Anthony Grist
@KumarVivekMitra 我已经编辑了我的问题,请查看并帮忙。 - GameBuilder

0

尝试类似以下代码:

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

希望这能有所帮助!

是的,我有点太快了。已编辑答案。 - Logard

0

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

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

第一个:索引为0,最后一个:索引为(size-1)

这将导致以下条件:

if ((i > 0) && (i < mimeList.size() - 1))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接