我是Java的新手。请不要把-ve投票。我只是想知道。 我有以下数据:
[john-london-4455-null,mark-newyork-null-null,abishek-null-2244-java developer...may be more]
可能更多来自网络的动态数据。
现在我想在这种情况下创建三个数组列表。它取决于从网络获取的数据。
修改
我的意图是,我想创建
array1= john, mark, abishek
array2= london, newyork,null
array3=4455,null,2244
array4=null,null, java developer
.
.
.
可能更依赖于数据。
答案 0 :(得分:1)
创建PersonInfo
Bean类
class PersonInfo
{
String name,loc,add;
Data(String name,String loc,String add)
{
this.name=name;
this.loc=loc;
this.add=add;
}
}
并创建ArrayList<PersonInfo>
List<PersonInfo> list = new ArrayList<PersonInfo>();
list.add(new PersonInfo("john", "london", "4455"));
list.add(new PersonInfo("abishek", "mumbai", "2244"));
list.add(new PersonInfo("mark", "newyork", "3366"));
答案 1 :(得分:1)
为什么不创建像
这样的Utility类public class PersonInfo{
String name;
String loc;
String add;
}
创建ArrayList<PersonInfo>
在这种情况下,您不必创建单独的ArrayList
答案 2 :(得分:1)
看起来你的数据是某种对象数组,文本用连字符分隔。您可以使用以下代码将其解析为列表:
String data = "[[john-london-4455-null],[mark-newyork-null-null],[abishek-null-2244-java developer]]";
//first, remove the first and last square brackets
data = data.substring(1, data.length()-1);
//now separate each object by splitting on the commas
String[] parts = data.split(",");
//create the array that will store all your array data
String[][] lists = new String[parts.length][];
//now create each list and store it in your array
for (int i = 0; i < parts.length; i++) {
String str = parts[i].substring(1, parts[i].length()-1);
lists[i] = str.split("-");
}
现在您可以使用列表对象了。这比使用List<String>
更有效。
答案 3 :(得分:1)
以下是根据我对您的问题的理解编写的代码段。我试图将ArrayList
数据拆分为数组。然后使用简单的for循环将拆分数据插入到相应的列表中。
String[] listToArray;
List<String> one = new ArrayList<>();
List<String> two = new ArrayList<>();
List<String> l = new ArrayList<>();
l.add("1-name1-addr1");
l.add("2-name2-addr2");
// l contains the data as you mentioned
for (Iterator<String> iterator = l.iterator(); iterator.hasNext();) {
String string = (String) iterator.next();
listToArray = string.split("-");
for(int i =0; i<listToArray.length; i+=3){
one.add(listToArray[i]);
}
for(int i =1; i<listToArray.length; i+=3){
two.add(listToArray[i]);
}
}
System.out.println(one);
System.out.println(two);
}
如果您需要输出作为数组,只需在单个列表上调用toArray()
方法。
PS:如果您可以选择豆类,那么事情会变得更加容易。