gpt4 book ai didi

java - 输入是一个字符串数组,输出是一个ArrayList

转载 作者:行者123 更新时间:2023-12-02 01:12:37 25 4
gpt4 key购买 nike

我的问题在于,我想将 String[] 插入 ArrayList 中,这工作正常。

在尝试从 ArrayList 获取我的 String[] 时,我只收到一个 ArrayList 作为返回。有什么方法可以检索我的 String[].

我似乎找不到可以解决这个问题的方法。我想克制自己不要围绕它进行编程。

public ArrayList<String> getAllAttributes() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(vmxConfigFile));
ArrayList<String> attributes = new ArrayList<String>();

for(int i = 0 ; i < getAmountOfAttributes() ; i++) {
String line = reader.readLine();
String[] attribute = line.split("=");
attributes.addAll(Arrays.asList(attribute));
}

return attributes;
}

public static void main(String[] args) throws IOException {
VMXConverter vmx = new VMXConverter("file:///C://Users//trisi//Downloads//vCloud-Availability.vmx_ ");
ArrayList<String> list = vmx.getAllAttributes();

for(int i = 0; i < list.size(); i++) {
// What i want to do: String[] x = list.get(i);
String x = list.get(i); <--this is currently my only option
}
}

我期望,当我抓取列表中的元素时,它应该是一个大小为 2 的数组,带有 2 个关键字。

相反,我得到一个列表,其中元素不再按数组排序

最佳答案

这是因为你没有将字符串数组添加到数组列表中,而是将字符串数组的所有元素添加到数组列表中,所以你只会得到一个大数组列表。

你能做的不是返回字符串的数组列表,而是返回字符串数组的数组列表:

public ArrayList<String[]> getAllAttributes() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(vmxConfigFile));
ArrayList<String[]> attributes = new ArrayList<>();

for(int i = 0 ; i < getAmountOfAttributes() ; i++) {
String line = reader.readLine();
String[] attribute = line.split("=");
attributes.add(attribute);
}

return attributes;
}

public static void main(String[] args) throws IOException {
VMXConverter vmx = new VMXConverter("file:///C://Users//trisi//Downloads//vCloud-Availability.vmx_ ");
ArrayList<String[]> list = vmx.getAllAttributes();

for(int i = 0; i < list.size(); i++) {
String[] x = list.get(i);
}
}

但是我认为你不想要这个。如果我理解得很好,你有一个包含键=值对的文件。我建议将它们加载到 map 中,这样使用起来会更容易。

您可以像这样加载到 map :

public Map<String,String> getAllAttributesMap() throws IOException {
BufferedReader reader = new BufferedReader(new FileReader(vmxConfigFile));
Map<String,String> attributes = new HashMap<>();

while( (line = br.readLine()) != null){
String[] attribute = line.split("=");
if(attribute.length>0 && attribute[0]!=null)
attributes.put(attribute[0],attribute.length<1?null:attribute[1]); //just to avoid null pointer problems...
}

return attributes;
}

因此您可以轻松地从 map 中获取键的值。

Map<String,String> attributes=getAllAttributesMap();
System.out.println("Value of foo: "+attributes.get("foo"));
System.out.println("Value of bar: "+attributes.get("bar"));

关于java - 输入是一个字符串数组,输出是一个ArrayList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57676218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com