这是Java中的良好编码吗?:
我有一个String数组。 String[] strArr = ...
。现在,我想对其进行处理并获得结果,因此我制作了一个将String数组作为参数的方法,例如,
public bopolen processArray(String[] srtArr){
// .... some processing
// loop over string array, process it and create a
// list of objects with same size as array
List<Object> objList = new ArrayList<Object>(strArr.length);
for(String str : strArr) {
String[] anotherStrArr = str.split(",");
Object myObj = new MyObject(anotherStrArr[0],anotherStrArr[1]);
objList.add(myObj);
}
// .... some more processing
// ....
// loop over list and call another method
// that also takes an String array as argument like
for (Object obj: objList) { <-- will loop same times as for the String array.
boolean res = processData(obj.getDataMethod(), strArr); <-- again pass the same array as argument to another method.
// This method will get called as many time as array length.
}
}
现在第二种方法:
public boolean processData(String data, String[] strArr) {
// ..... some processing.
// loop over String array and compare with data to process.
for(String str: strArr) {
String[] againStrArr = str.split(",");
if(againStrArr[0].equals(data)) {
// ... process on data and get the result.
}
}
// ..... other statements of method.
}
如您所见,我将同一数组传递给2个方法,并一次又一次地遍历它。这是Java中的一种好习惯吗,因为我的数组大小很长,正常情况下大约2000个元素。
关于为什么要循环这么多的解释:
我从请求中获取了一个String数组,其中包含必须在数据库中更新的myObject的db_name和db_score。 strArr中的每个元素都是逗号分隔的db值,例如
db_name,db_score
。因此,首先我遍历数组并创建一个以逗号分隔的所有名称的字符串,然后在数据库中查询以创建MyObject列表。然后,我遍历此列表以用新分数更新myObj,但是要获得名称的准确分数,我再次必须遍历数组并比较名称,然后获取其分数。这是我称为玩家的表格:
id | name | score
1 | mark | 5
2 | mark_1 | 5
3 | mark_2 | 5
4 | mark_3 | 5
字符串数组中的样本数据:
{"mark,10","mark_1,15","mark_2,20","mark_3,30"}
现在,我遍历数组并创建用逗号分隔的名称字符串,并将其用于查询中,例如:
select * from myObject where name in ('mark','mark_2','mark_2','mark_3')
|_________________________________|
|
this much part is built from looping over the String array
因此,第一次迭代是用于创建查询的where子句。现在,此查询返回MyObject的列表。我第二次遍历此列表以更新玩家分数。但是要获得特定玩家名称的分数,我再次必须遍历strArray并找到它。因此,对于列表中的每个元素,我必须调用一个方法,并传递playerName和strArr以获取其分数,然后最终在数据库中对其进行更新。
最佳答案
不用担心当您传递数组时,数组本身不会复制到堆栈,而只是对其的引用。可以将数组传递给任意数量的方法,这是完全可以的。并且数组的大小不会对性能产生任何影响(当然,方法本身除外)。
关于java - Java编码样式-将String数组一次又一次地传递给多个方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8876505/