将字符串数组转换为列表:双括号

将字符串数组转换为列表:双括号

问题描述:

我使用这部分代码将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);


    }
}