gpt4 book ai didi

java - 如何迭代数组列表中的最后 5 个值

转载 作者:行者123 更新时间:2023-12-02 05:47:54 25 4
gpt4 key购买 nike

您好,我正在尝试使用数组列表访问字符串,其中我使用以下代码

public class Demo {

public static void main(String args[])
{
URL url;
ArrayList<String> list1 = new ArrayList<String>();
ArrayList<String> list2 = new ArrayList<String>();
List commodity=null;
List pric=null;
int c,p=0;
try {
// get URL content
String a="http://122.160.81.37:8080/mandic/commoditywise?c=Paddy";
url = new URL(a);
URLConnection conn = url.openConnection();
// open the stream and put it into BufferedReader
BufferedReader br = new BufferedReader(
new InputStreamReader(conn.getInputStream(), "UTF-8"));
StringBuffer sb=new StringBuffer();
String inputLine;
while ((inputLine = br.readLine()) != null)
{
// System.out.println(inputLine);
String s=inputLine.replace("|", "\n");
s=s.replace("~"," ");
StringTokenizer str = new StringTokenizer(s);
while(str.hasMoreTokens())
{
String mandi = str.nextElement().toString();
String price = str.nextElement().toString();
list1.add(mandi);
list2.add(price);
}

}
{
commodity = list1.subList(200, 207);
pric = list2.subList(0, 8);
for (c = 0, p = 0; c < commodity.size() && p < pric.size(); c++, p++) {
System.out.println(commodity.get(c));
}
}}
catch(Exception e){
System.out.println(e);
}
}
}

这里我得到了异常java.lang.IndexOutOfBoundsException: toIndex = 207

如果我使用

{


commodity = list1.subList(200, 206);

for (c = 0, p = 0; c < commodity.size() && p < pric.size(); c++, p++) {
System.out.println(commodity.get(c));
}
}}

它工作正常,我知道为什么会发生,但我想处理这个问题,因为我在未来的字符串中可能会一直到 207, 208

我怎样才能得到我的输出

提前致谢?

最佳答案

正如您所说, commodity = list1.subList(200, 207); 不起作用,但 commodity = list1.subList(200, 206); 有效,这意味着索引超出范围,并且 206 是 ArrayList 中的最后一项。所以我假设你想要从 200 到 length-1 的子字符串。所以你可以使用:

commodity = list1.subList(200, lis1.size()-1);

现在,硬编码起始索引 200 也是危险的,列表大小可能小于 200!所以你可以使用类似的东西:

if(list1.size>5)
commodity = list1.subList(lis1.size()-5, lis1.size()-1);
else
//it is an error condition , so handle it as you want to

如果您确定这就是 list1 应该开始的位置,您还可以执行检查以查看大小是否大于 200。另一种方法可以迭代元素并单独添加它们。如果您有办法识别它是 mandi 还是 Price,则应该这样做。PS:即使你确定列表的长度超过200,进行检查也没有什么坏处。这是一个很好的做法。希望这会有所帮助。

关于java - 如何迭代数组列表中的最后 5 个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23870518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com