请看下面两段代码。。MessageTopic对象建立的位置,直接导致了保存在List中MessageTopic对象的改变
第一段代码
public static List<MessageTopic> getTopicList(ResultSet rs) {
List<MessageTopic> ml = new ArrayList<MessageTopic>();
if(rs != null) {
try {
while(rs.next()) {
MessageTopic mt = new MessageTopic();
mt.setTopicid(rs.getString("topicid"));
mt.setTopicInterester(rs.getString("topicinterester"));
mt.setTopicName(rs.getString("topicname"));
ml.add(mt);
}
return ml;
} catch (SQLException e) {
e.printStackTrace();
}finally {
ResultManager.closeTranscation(); //关闭相应连接
}
}
return null;
}
无可厚非,第一段代码是正确的。。 细看第二段代码
第二段代码
public static List<MessageTopic> getTopicList(ResultSet rs) {
List<MessageTopic> ml = new ArrayList<MessageTopic>();
MessageTopic mt = new MessageTopic();
if(rs != null) {
try {
while(rs.next()) {
mt.setTopicid(rs.getString("topicid"));
mt.setTopicInterester(rs.getString("topicinterester"));
mt.setTopicName(rs.getString("topicname"));
ml.add(mt);
}
return ml;
} catch (SQLException e) {
e.printStackTrace();
}finally {
ResultManager.closeTranscation(); //关闭相应连接
}
}
return null;
}
在第二段代码中,在while循环之外声明了MessageTopic对象,其结果导致在ArrayList列表中保存的MessageTopic对象,均为跳出循环之前最后一个被修改的对象,即:列表当中的所有对象与最后一个在循环中被修改的对象一模一样。。
这是在编程中非常容易出现的错误。。切记。。
分享到:
相关推荐
在Java编程中,有时我们需要从一个`List`中获取对象的属性值,特别是在处理各种不同类型的对象集合时。本文将详细介绍如何使用Java的反射机制来实现这一目标。 首先,让我们理解一下`List`接口和反射的基本概念。`...
在给定的代码示例中,通过`for`循环遍历了一个列表`list`,为每个元素创建了多个子元素: ```csharp for (int i = 0; i < list.Count; i++) { ShengLi.Model.SysPageUrl _model = list[i]; // 选取根元素 ...
`List` 提供了动态数组的功能,允许我们在列表中存储任意数量的元素,并可以方便地进行添加、删除、查找等操作。在这个名为“List用法汇总.zip”的压缩包中,我们很可能会找到关于如何使用 `List` 的一系列技巧和...
List 的 get(int index) 方法返回集合中由参数 index 指定的索引位置的对象,下标从“0” 开始。 最基本的两种检索集合中的所有对象的方法: 1. for 循环和 get() 方法: for(int i=0; i<list.size();i++){ ...
在本示例中,“QT-qml轮播图自动循环”是使用QML来实现的一种常见UI组件——轮播图(Carousel),通常用于展示如广告、图片或信息等元素,具有自动循环和手动滑动的功能,类似于京东电商移动应用中的滚动图展示。...
2. 创建List对象:List<T> testList = new List(IEnumerable<T> collection); 例如:string[] temArr = { "Ha", "Hunter", "Tom", "Lily", "Jay","Jim", "Kuku", "Locu" }; List<string> testList = new List(temArr...
1. **DWR的配置**:在使用DWR之前,需要在Web应用的配置文件(如`dwr.xml`)中声明允许被远程调用的Java类和方法。这样,DWR引擎才能知道哪些Java方法可以被JavaScript访问。 2. **Java服务端处理**:在服务端,...
在DWR配置中,你需要声明`MyAction`类以及`selectUserData`方法,这样DWR才能知道如何调用它: ```xml ``` 接下来,在JavaScript中,我们可以调用这个服务器端的方法,传递参数并提供一个回调函数来...
- 可以使用 `foreach` 循环遍历 `List` 中的所有元素: ```csharp foreach (string s in myList) { Console.WriteLine(s); } ``` **4. 删除元素** - **删除指定元素** ```csharp myList.Remove("Hunter...
- 在构造函数(TForm1的构造函数)中初始化TList对象,如`MyVCL = new TList;` - 在析构函数中删除TList对象,以释放内存,如`delete MyVCL;` 2. **向控件数组中添加控件** - 在控件的创建事件(如FormCreate)...
在上面的代码中,我们首先创建了一个List集合,并添加了三个订单对象。然后,我们使用流式编程从List集合中取出订单号的集合。`map`方法将每个订单对象转换为其订单号,`collect`方法将转换后的结果收集到一个列表中...
在上面的代码中,我们使用 Stream().forEach() 方法来循环处理 List,并将每个元素打印出来。 2. 利用 Stream().map() 处理 List,并给另外一个 List 赋值 ```java List<String> list1 = Lists.newArrayList(); ...
这个"对象数组例题"可能包含各种场景,比如创建多态对象数组,处理空数组,使用接口,以及在实际问题中应用对象数组等。通过这些练习,你不仅可以掌握对象数组的基础,还能深入理解Java内存管理和面向对象编程的概念...
在这个特定的场景中,我们关注的是如何在MFC的ListCtrl控件中每行内嵌入并显示button。ListCtrl是一个非常灵活的控件,通常用于展示列表式的数据,而添加button则可以增加交互性,允许用户对每一项数据执行特定的...
在Java中,我们可以用`for`循环实现这一点,并结合List的`get()`和`set()`方法来访问和修改元素。 以下是一个简化的示例代码片段,演示了如何使用Java List实现冒泡排序: ```java import java.util.ArrayList; ...
创建一个 `List<T>` 对象,需要指定泛型参数 `T`,表示列表中元素的类型。例如,创建一个存储字符串的 `List<string>`: ```csharp List<string> mList = new List(); ``` 2. **初始化**: 你可以通过一个现有...
在给定的标题和描述中,提到的是如何在JSF 1.2环境下使用类似Struts的迭代和循环功能,结合Ajax技术增强用户体验。 首先,JSF 1.2提供了 `<ui:repeat>` 标签,它是用来替代JSP中的 `<c:forEach>` 标签进行循环遍历...
判断某个元素是否在该List中:List.Contains(T item)返回true或false,很实用,例如:if (mList.Contains("Hunter")) { Console.WriteLine("There is Hunter in the list"); } else { mList.Add("Hunter"); } List...
在这个"通讯录全功能"项目中,`MailList`可能是用于存储和管理邮件列表的类或文件名。它可能包含了读取、写入、添加和删除邮件地址的功能。如果`MailList`是一个类,那么它可能包含字段或属性来存储邮件地址,并提供...
本文将详细介绍如何在C#的数据实体类中为属性赋值,特别是当从数据库中取出的是一个`DataSet`对象时。 #### 实体类定义 首先,我们需要定义一个简单的实体类。在这个例子中,我们定义了一个名为`Class1`的实体类,...