list值循环添加对象 重复最后一个值

list值循环添加对象 重复最后一个值,第1张

可能要把对象声明放到循环内:while(rs.next()){

Student stuTemp=new Student()

……

}

如果不行那还有一种可能是你的Student类里几个变量是不是定义成静态的了,也会出现这种问题

List集合可以出现重复值,List集合的特性如下:

1、List<T>类是 ArrayList 类的泛型等效类。该类使用大小可按需动态增加的数组实现 IList<T>泛型接口

2、List<T>类既使用相等比较器又使用排序比较器。

诸如 Contains、IndexOf、LastIndexOf 和 Remove 这样的方法对列表元素使用相等比较器。类型 T 的默认相等比较器按如下方式确定。如果类型 T 实现 IEquatable<T>泛型接口,则相等比较器为该接口的 Equals(T)方法;否则,默认相等比较器为 Object.Equals(Object)。

诸如 BinarySearch 和 Sort 这样的方法对列表元素使用排序比较器。类型 T 的默认比较器按如下方式确定。如果类型 T 实现 IComparable<T>泛型接口,则默认比较器为该接口的 CompareTo(T) 方法;否则,如果类型T 实现非泛型 IComparable 接口,则默认比较器为该接口的 CompareTo(Object) 方法。如果类型 T 没有实现其中任一个接口,则不存在默认比较器,并且必须显式提供比较器或比较委托。

3、List<T>不保证是排序的。在执行要求 List<T>已排序的 *** 作(例如 BinarySearch)之前,您必须对 List<T>进行排序。

4、可使用一个整数索引访问此集合中的元素。此集合中的索引从零开始。

5、List<T>接受 null 作为引用类型的有效值并且允许有重复的元素。

Private

Sub

Command1_Click()

Dim

strInPut()

As

String

Dim

strTmp()

As

String

Dim

I

As

Integer

Dim

J

As

Integer

ReDim

Preserve

strTmp(1)

ReDim

Preserve

strInPut(1)

strInPut

=

Split(Text1.Text,

,

-1)

'

默认Text1中的字符串以空格为分隔符

'你所指定的

vbCrLf

参数是以换行和回车符作为字符串的分隔符,在Text1中是不可见的不易区分,不如就用默认值,推荐

’最好在此处加上排除Text1.Text中本身重复的元素的代码

I

=

0

Do

While

I

<

List1.ListCount

strTmp

=

Filter(strInPut,

CStr(List1.List(I)),

False,

0)

strInPut

=

strTmp

I

=

I

+

1

Loop

J

=

0

Do

While

J

<

UBound(strTmp)

+

1

List1.AddItem

strTmp(J)

J

=

J

+

1

Loop

End

Sub

以上代码缺点是如果List1中有如“上官云”那么就不能追加包含“上官云”的元素了,自己改了

:0

出现以下问题的原因:

1、现在的问题还是

输入两个名字

按键后

两个名字出现在list中是并排不是排列

你所指定的

vbCrLf

参数是以换行和回车符作为字符串的分隔符,在Text1中是不可见的不易区分,导致数组元素分割错误,将两个元素看成一个对待了。

本人拙见,不妥之处请指正,欢迎交流,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7899953.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存