防止在 java 中显示 Arraylist 值两次
Prevent display of Arraylist values twice in java
我有一个 returns 数组列表的方法。但是 Arraylsit 显示了两次它的值。
代码是-
ArrayList<Double> ref_jsp=new ArrayList<Double>();
public ArrayList<Double> refernece(String name) throws SQLException, ParseException {
String first=name.substring(1,19);
String last =name.substring(24,42);
List<Double> slist = new ArrayList<Double>(map1.keySet());
String s = StringUtils.join(slist, ',');
System.out.println("comma separated string"+s);
try
{
con = getConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String vs2="SQL Query"
stmt.executeQuery(vs2);
rs1 = stmt.getResultSet();
while(rs1.next())
{
ref_jsp.add((rs1.getDouble(1)));
ref_jsp.add((rs1.getDouble(2)));
ref_jsp.add((rs1.getDouble(3)));
ref_jsp.add((rs1.getDouble(4)));
ref_jsp.add((rs1.getDouble(5)));
ref_jsp.add((rs1.getDouble(6)));
ref_jsp.add(rs1.getDouble(7));
ref_jsp.add(rs1.getDouble(8));
ref_jsp.add(rs1.getDouble(9));
ref_jsp.add(rs1.getDouble(10));
ref_jsp.add((rs1.getDouble(11)));
}
}
catch( Exception e )
{
System.out.println("\nException in reference "+e);
}
return ref_jsp;
}
我的 Sql 查询 fine.I 已检查 it.The 显示 ref_jsp 返回的值 twice.Please 解释我哪里出错了??我的 jsp 显示列表值的代码敌人是-
<%
String ref_name= request.getParameter("ref_logtime");
pageContext.setAttribute("ref_name", ref_name);
ref.FindClosestToMultiplesOfTen(ref_name);
ref.refernece(ref_name);
%>
<table width = "300px" border = "1" cellspacing="2">
<tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">
<td><c:out value="${r}"></c:out></td>
</c:forEach></tr>
</table>
我的输出形式为-
value-1 value-2 value-3 value-4 value-1 value-2 value-3 value-4
看起来问题是因为您的 java class.
中的以下行
ArrayList<Double> ref_jsp = new ArrayList<Double>();
您已将 ref_jsp
声明为 class 级变量,将其移入方法 public ArrayList<Double> refernece(String name)
。
发生这种情况是因为您从 jsp.
调用了 referenece
方法两次
<%
String ref_name= request.getParameter("ref_logtime");
pageContext.setAttribute("ref_name", ref_name);
ref.FindClosestToMultiplesOfTen(ref_name);
ref.refernece(ref_name); //******* 1st call *********
%>
<table width = "300px" border = "1" cellspacing="2">
<tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">//***2nd call***
<td><c:out value="${r}"></c:out></td>
</c:forEach></tr>
</table>
在第一次调用期间,假设您有 10 个项目,并且这些项目已添加到您的 arraylist 中,并且由于该 arraylist 是一个实例级变量,在第二次调用期间,您再次获得了 10 个项目,并且与现有的 10 个项目一起添加,因此您有重复的项目。
@Zeeshan 指出错误。如果您不想使 arraylist 作为函数的本地成员返回,并且正如您提到的 ref_jsp 也在另一种方法中使用,请确保在所有关联方法时清除 arraylist 的元素已完成对该列表的操作。为此使用 ref_jsp.clear()。
我有一个 returns 数组列表的方法。但是 Arraylsit 显示了两次它的值。 代码是-
ArrayList<Double> ref_jsp=new ArrayList<Double>();
public ArrayList<Double> refernece(String name) throws SQLException, ParseException {
String first=name.substring(1,19);
String last =name.substring(24,42);
List<Double> slist = new ArrayList<Double>(map1.keySet());
String s = StringUtils.join(slist, ',');
System.out.println("comma separated string"+s);
try
{
con = getConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
String vs2="SQL Query"
stmt.executeQuery(vs2);
rs1 = stmt.getResultSet();
while(rs1.next())
{
ref_jsp.add((rs1.getDouble(1)));
ref_jsp.add((rs1.getDouble(2)));
ref_jsp.add((rs1.getDouble(3)));
ref_jsp.add((rs1.getDouble(4)));
ref_jsp.add((rs1.getDouble(5)));
ref_jsp.add((rs1.getDouble(6)));
ref_jsp.add(rs1.getDouble(7));
ref_jsp.add(rs1.getDouble(8));
ref_jsp.add(rs1.getDouble(9));
ref_jsp.add(rs1.getDouble(10));
ref_jsp.add((rs1.getDouble(11)));
}
}
catch( Exception e )
{
System.out.println("\nException in reference "+e);
}
return ref_jsp;
}
我的 Sql 查询 fine.I 已检查 it.The 显示 ref_jsp 返回的值 twice.Please 解释我哪里出错了??我的 jsp 显示列表值的代码敌人是-
<%
String ref_name= request.getParameter("ref_logtime");
pageContext.setAttribute("ref_name", ref_name);
ref.FindClosestToMultiplesOfTen(ref_name);
ref.refernece(ref_name);
%>
<table width = "300px" border = "1" cellspacing="2">
<tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">
<td><c:out value="${r}"></c:out></td>
</c:forEach></tr>
</table>
我的输出形式为-
value-1 value-2 value-3 value-4 value-1 value-2 value-3 value-4
看起来问题是因为您的 java class.
中的以下行ArrayList<Double> ref_jsp = new ArrayList<Double>();
您已将 ref_jsp
声明为 class 级变量,将其移入方法 public ArrayList<Double> refernece(String name)
。
发生这种情况是因为您从 jsp.
调用了referenece
方法两次
<%
String ref_name= request.getParameter("ref_logtime");
pageContext.setAttribute("ref_name", ref_name);
ref.FindClosestToMultiplesOfTen(ref_name);
ref.refernece(ref_name); //******* 1st call *********
%>
<table width = "300px" border = "1" cellspacing="2">
<tr><c:forEach var="r" items="${ref.refernece(param.ref_logtime)}">//***2nd call***
<td><c:out value="${r}"></c:out></td>
</c:forEach></tr>
</table>
在第一次调用期间,假设您有 10 个项目,并且这些项目已添加到您的 arraylist 中,并且由于该 arraylist 是一个实例级变量,在第二次调用期间,您再次获得了 10 个项目,并且与现有的 10 个项目一起添加,因此您有重复的项目。
@Zeeshan 指出错误。如果您不想使 arraylist 作为函数的本地成员返回,并且正如您提到的 ref_jsp 也在另一种方法中使用,请确保在所有关联方法时清除 arraylist 的元素已完成对该列表的操作。为此使用 ref_jsp.clear()。