将字符串数组转换为列表:双括号
问题描述:
我使用这部分代码将jlist中的选择项转换为字符串列表。我得到以下结果:
I use this part of the code to get the select items from a jlist into a string list. I get the following result:
[[String1, String2, String3,...]]
如何避免出现双重[]?谢谢
How can I avoid the double []? Thanks
static List<String> strlist = new ArrayList<String>();
public class tog {
List<String> strlisttemp = new ArrayList<String>();
final JList list = new JList(strlisttemp.toArray());
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
final ListSelectionListener listSelectionListener = new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
String lstr = list.getSelectedValuesList().toString();
System.out.println(lstr);
strlist = Arrays.asList(lstr.split("\\s*,\\s*"));
}
};
list.addListSelectionListener(listSelectionListener);
JOptionPane.showMessageDialog(null, list, "Select", JOptionPane.QUESTION_MESSAGE);
System.out.println(strlist);
}
这是有问题的部分:何时我打印lstr它可以正常工作[...]。当我使用此命令时:
strlist = Arrays.asList(lstr.split("\\s*,\\s*"));
然后System.out.println(strlist);打印双括号
答
您不必要地转换了返回的列表
转换为其原始的 String
表示形式,将该 String
拆分为一个 String []
,然后将 String []
转换为List。
You're unnecessarily converting the returned List
to its raw String
representation, splitting that String
into a String[]
, then converting the String[]
to List.
相反,直接使用
package com.example.list;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
public class ListExample {
static List<String> strlist = new ArrayList<String>();
public static void main(String[] args) {
List<String> strlisttemp = new ArrayList<String>();
strlisttemp.add("a");
strlisttemp.add("b");
strlisttemp.add("c");
final JList list = new JList(strlisttemp.toArray());
list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
final ListSelectionListener listSelectionListener = new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
strlist = list.getSelectedValuesList(); // use this instead
// String lstr = list.getSelectedValuesList().toString();
// strlist = Arrays.asList(lstr.split("\\s*,\\s*"));
System.out.println(strlist);
}
};
list.addListSelectionListener(listSelectionListener);
JOptionPane.showMessageDialog(null, list, "Select", JOptionPane.QUESTION_MESSAGE);
}
}