
具体看你表结构的设计,还有对象设计(Model)了,然后就是看你的持久化技术使用的是什么(hibernate/Mybatis/jdbc等),根据相应技术文档,编写添加代码就行了。
看到你的记录集合,你需要把数据和表对应起来,使用批量插入的方式进行处理
这个问题其实只要看看ArrayList的jdoc就可以明白了,你使用ArrayList的add方法向ArrayList中添加了两个对象,所以,它的元素个数为2,你使用indexOf来查找对象,在ArrayList中indexOf方法实际上是调用对象的equals方法进行比较,并返回第一个符合条件的对象位置,所以,当你的两个字符串内容相同时使用equals方法比较的话,当然会返回第一个对象的位置了
--
关于补充:
这么说吧,你把arraylist看作为一个链表,向其中添加对象就是为链表创建一个新的对象指针,不管你放入的对象是一个还是多个同样的,他都是会创建一个对应的对象指针的所以size会为2
"如果认为a和b引用了不同的对象,那么数组列表中的元素b的序列号在开始时为0,后又变为1 "我觉得这种情况是不会出现的,你的程序中之所以第二次放入b的时候序号变为1是因为第二个b的内容和a不同,可以看一下arraylistindexof的说明跟string特性没有关系,indexof方法会 调用 对象的 equals方法 string的equals方法不就是对串的内容作比较么
换一种想法,如果你自己作一个类,声明两个对象并放入arraylist中,就算你对象内容完全一样,但是没有覆写equals方法的话indexof 的结果就不会出现b = 0的情况,但是如果你按照string的equals方式覆写equals(就是比对内容),那么当a,b对象内容一样的情况下,用indexof 查找得到的一定是先放入arraylist的对象的位置
所以,出现你说的那种情况是由arraylist内对象的equals方法的不同所造成的,而不是string的特殊性
string的特殊性应该是内容不可变,如: String s = "a" + "b" + "c";这条语句执行过程中会产生5个String对象
-------------------------------------------
String,之所以我说String s = "a" + "b" + "c";会产生5个字符串对象的原因就是String的内容是不可变的,就是说,上面的语句中首先有三个字符串对象("a" , "b", "c") 然后,"a" + "b"产生第四个字符串"ab", "ab" + "c" 产生最后一个字符串"abc"所以一共是5个,这是String的特点,其他的类似Integer, Long, Double等(注意,这是类,不是基本类型)也都有这个特点,具体的可以看JDK帮助文档,或者看看java的源程序
ArrayList arr = new ArrayList()
声明一个列表变量arr并且实例化
arradd(username);
把username变量添加到arr里面,现在列表的第一个位置就是username了
arradd(password);
把password变量添加到arr里面,排在username后面
LoginHandler lh = new LoginHandler();
声明一个LoginHandler类型的变量lh,并实例化
User loginUser = lhcheckLogin(arr);
声明一个User类型的变量loginUser, 用于接收LoginHandler类里面checkLogin方法返回的结果。arr作为checkLogin方法的参数穿进去。
以上就是关于ArrayList<Object>集合sqlite数据库全部的内容,包括:ArrayList<Object>集合sqlite数据库、ArrayList类对象里装载的是对象,还是对象的引用呢还是其它什么东西、ArrayList arr = new ArrayList()等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)