for 循环保存最后一个索引而不是按索引保存索引
for cycle saving the last index instead of saving index by index
我是新来的 java 我有一个问题,for 循环没有将数据添加到列表中:
这是代码
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(Model modl) throws TwitterException {
// --------------------------------------------------
// getTweets example
// --------------------------------------------------
Twitter twitter = new TwitterFactory().getInstance();
/*
* final TweetsResponse tweets = GetTweetsKt.getTweets(twitter, new
* long[]{1510021574505738201L}, null, null, null, null, null, "");
*/
/*
* userId: Long, endTime: Date? = null, exclude: String? = null, expansions:
* String? = null, maxResults: Int? = null, mediaFields: String? = null,
* paginationToken: String? = null, placeFields: String? = null, pollFields:
* String? = null, sinceId: Long? = null, startTime: Date? = null, tweetFields:
* String? = null, untilId: Long? = null, userFields: String? = null,
*/
long userId = 1510021146334437310L;
Date endTime = null;
String exclude = null;
String expansions = null;
int maxResults = 100;
String mediaFields = null;
String paginationToken = null;
String placeFields = null;
String pollFields = null;
long sinceId = 1510021521342926810L;
Date startTime = null;
String tweetFields = null;
long untilId = 1510022761187627010L;
String userFields = null;
final TweetsResponse tweets = TimelinesExKt.getUserTweets(twitter, userId, endTime, exclude, expansions,
maxResults, mediaFields, paginationToken, placeFields, pollFields, sinceId, startTime, tweetFields,
untilId, userFields);
tweetModel tweetmodel = new tweetModel();
List<tweetModel> tweetmodelList = new ArrayList<>();
for (int i = 0; i < tweets.getTweets().size(); i++) {
System.out.println(i);
System.err.println("FOR TWEETS = " + tweets.getTweets().get(i).getText().toString());
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
System.err.println("TWEETMODEL2::::::::::::::::"+this.tweetmodel2.getTweets().toString());
System.err.println("//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets=="
+ tweetmodel.getTweets().toString());
}
for (int z = 0; z < tweetmodelList.size(); z++) {
System.err.println(" ====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== " + tweetmodelList.get(z).getTweets().toString());
}
modl.addAttribute("tweetlists", tweetmodelList);
return "index";
}
这是我设置 getTweets() 函数获取的数据的代码行
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
问题是 tweetmodelList 正在显示和记录最后一条记录集,我有 7 条推文,函数写入最后一条记录的 7 倍,不知道我做错了什么,因为
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
在 for 循环内,因此它应该迭代....例如,为了更好地理解发生的事情,我将 post 这里打印在控制台中的结果
控制台中的数据在这里
FOR TWEETS = tweet 6
TWEETMODEL2::::::::::::::::tweet 6
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==tweet 6
1
2
3
4
5
6
FOR TWEETS = hello
TWEETMODEL2::::::::::::::::hello
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==hello
FOR TWEETS = cinco tweets
TWEETMODEL2::::::::::::::::cinco tweets
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==cinco tweets
FOR TWEETS = no
TWEETMODEL2::::::::::::::::no
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==no
FOR TWEETS = si
TWEETMODEL2::::::::::::::::si
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==si
FOR TWEETS = tweet number 3
TWEETMODEL2::::::::::::::::tweet number 3
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets== tweet number 3
FOR TWEETS = tweet last
TWEETMODEL2::::::::::::::::tweet last
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==programar es mi tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ========
tweet last
如您所见,出于某种原因,TWEETMODELIST 仅保存最后一个注册表,但保存相同的正确数量的推文,即 7记录器或由
保存
tweetmodelList.add(this.tweetmodel2);
在此先感谢,正确答案将被标记为已解决
首先,下面的语句在for
循环中执行:
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
它的作用是替换tweetModel
的tweets集合,然后替换tweetModel2
的tweets集合。
但是,当您将 this.tweetmodel2
添加到 tweetmodelList
中时,您并没有添加包含 this.tweetmodel2
的推文集合。相反,您要添加对 this.tweetmodel2
本身的引用。
然后,在 for
循环的每次迭代之后, this.tweetmode2
的实例是相同的,但它的推文集合不同(因为它被新的替换)。因此,在 6 次迭代之后,您只有一个 this.tweetmode2
实例,最后的推文被替换了。这就是为什么你看到最后一条推文被打印出来的原因。
由于 for
语句迭代了 6 次,并且你有下一条语句在里面,所以它向变量 tweetmodelList
.
添加了 6 个元素
tweetmodelList.add(this.tweetmodel2); <-- adds the reference to variable tweetmodel2 into tweetmodelList 6 times
可以通过创建新实例并将其分配给 this.tweetmodel2
来解决此问题,如下所示:
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2 = new TweetModel2(); <-- Create and assign a new instance
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
我是新来的 java 我有一个问题,for 循环没有将数据添加到列表中:
这是代码
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index(Model modl) throws TwitterException {
// --------------------------------------------------
// getTweets example
// --------------------------------------------------
Twitter twitter = new TwitterFactory().getInstance();
/*
* final TweetsResponse tweets = GetTweetsKt.getTweets(twitter, new
* long[]{1510021574505738201L}, null, null, null, null, null, "");
*/
/*
* userId: Long, endTime: Date? = null, exclude: String? = null, expansions:
* String? = null, maxResults: Int? = null, mediaFields: String? = null,
* paginationToken: String? = null, placeFields: String? = null, pollFields:
* String? = null, sinceId: Long? = null, startTime: Date? = null, tweetFields:
* String? = null, untilId: Long? = null, userFields: String? = null,
*/
long userId = 1510021146334437310L;
Date endTime = null;
String exclude = null;
String expansions = null;
int maxResults = 100;
String mediaFields = null;
String paginationToken = null;
String placeFields = null;
String pollFields = null;
long sinceId = 1510021521342926810L;
Date startTime = null;
String tweetFields = null;
long untilId = 1510022761187627010L;
String userFields = null;
final TweetsResponse tweets = TimelinesExKt.getUserTweets(twitter, userId, endTime, exclude, expansions,
maxResults, mediaFields, paginationToken, placeFields, pollFields, sinceId, startTime, tweetFields,
untilId, userFields);
tweetModel tweetmodel = new tweetModel();
List<tweetModel> tweetmodelList = new ArrayList<>();
for (int i = 0; i < tweets.getTweets().size(); i++) {
System.out.println(i);
System.err.println("FOR TWEETS = " + tweets.getTweets().get(i).getText().toString());
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
System.err.println("TWEETMODEL2::::::::::::::::"+this.tweetmodel2.getTweets().toString());
System.err.println("//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets=="
+ tweetmodel.getTweets().toString());
}
for (int z = 0; z < tweetmodelList.size(); z++) {
System.err.println(" ====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== " + tweetmodelList.get(z).getTweets().toString());
}
modl.addAttribute("tweetlists", tweetmodelList);
return "index";
}
这是我设置 getTweets() 函数获取的数据的代码行
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
问题是 tweetmodelList 正在显示和记录最后一条记录集,我有 7 条推文,函数写入最后一条记录的 7 倍,不知道我做错了什么,因为
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);
在 for 循环内,因此它应该迭代....例如,为了更好地理解发生的事情,我将 post 这里打印在控制台中的结果
控制台中的数据在这里
FOR TWEETS = tweet 6
TWEETMODEL2::::::::::::::::tweet 6
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==tweet 6
1
2
3
4
5
6
FOR TWEETS = hello
TWEETMODEL2::::::::::::::::hello
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==hello
FOR TWEETS = cinco tweets
TWEETMODEL2::::::::::::::::cinco tweets
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==cinco tweets
FOR TWEETS = no
TWEETMODEL2::::::::::::::::no
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==no
FOR TWEETS = si
TWEETMODEL2::::::::::::::::si
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==si
FOR TWEETS = tweet number 3
TWEETMODEL2::::::::::::::::tweet number 3
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets== tweet number 3
FOR TWEETS = tweet last
TWEETMODEL2::::::::::::::::tweet last
//////////////////TWEET MODEL HAVE THIS!!!!!!! tweetmodel.settweets==programar es mi tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ======== tweet last
====== TWEETS IN TWEETMODELIST AFTER FIRST FOR tweetmodelList.add(tweetmodel); ========
tweet last
如您所见,出于某种原因,TWEETMODELIST 仅保存最后一个注册表,但保存相同的正确数量的推文,即 7记录器或由
保存tweetmodelList.add(this.tweetmodel2);
在此先感谢,正确答案将被标记为已解决
首先,下面的语句在for
循环中执行:
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
它的作用是替换tweetModel
的tweets集合,然后替换tweetModel2
的tweets集合。
但是,当您将 this.tweetmodel2
添加到 tweetmodelList
中时,您并没有添加包含 this.tweetmodel2
的推文集合。相反,您要添加对 this.tweetmodel2
本身的引用。
然后,在 for
循环的每次迭代之后, this.tweetmode2
的实例是相同的,但它的推文集合不同(因为它被新的替换)。因此,在 6 次迭代之后,您只有一个 this.tweetmode2
实例,最后的推文被替换了。这就是为什么你看到最后一条推文被打印出来的原因。
由于 for
语句迭代了 6 次,并且你有下一条语句在里面,所以它向变量 tweetmodelList
.
tweetmodelList.add(this.tweetmodel2); <-- adds the reference to variable tweetmodel2 into tweetmodelList 6 times
可以通过创建新实例并将其分配给 this.tweetmodel2
来解决此问题,如下所示:
tweetmodel.setTweets(tweets.getTweets().get(i).getText().toString());
this.tweetmodel2 = new TweetModel2(); <-- Create and assign a new instance
this.tweetmodel2.setTweets(tweetmodel.getTweets().toString());
tweetmodelList.add(this.tweetmodel2);