如何将字符串放入数组中而无需重复

时间:2019-08-24 10:29:59

标签: java

我在下面有这段文字

String text = "a b c a a b b b c d a z e q e m a m d z e"

如何将它们像这样放置在数组中

ArrayList<String> array = new ArrayList<>();
//array above should be has {"a","b","c","d","z","e","q","m"}

我该怎么做?

5 个答案:

答案 0 :(得分:1)

按空格分隔String,在其中创建一个LinkedHashSet-这将删除重复项并保留元素顺序(因为Set不允许重复值,并且使用了{{3 }}和Object::equals方法。LinkedHashSet还保留元素添加顺序)。然后使用其复制构造函数创建ArrayList

LinkedHashSet<String> set = Arrays.stream(text.split("\\s"))
                .collect(Collectors.toCollection(LinkedHashSet::new));

List<String> list = new ArrayList<>(set);

答案 1 :(得分:1)

使用流的另一种方法:

String text = "a b c a a b b b c d a z e q e m a m d z e";
ArrayList<String> array = Pattern.compile(" ")
                                 .splitAsStream(text)
                                 .distinct()
                                 .collect(Collectors.toCollection(ArrayList::new));
System.out.println(array);

答案 2 :(得分:0)

使用列表创建集合清除列表将集合项添加到列表

yourList.addAll(Arrays.asList(text.split(" "))); 
Set<String> set = new HashSet<>(yourList);
yourList.clear();
yourList.addAll(set);

答案 3 :(得分:0)

  

字符串文本=“ a b c a a b b b c d a z e q e a m d z e”

     

ArrayList array = new ArrayList <>();

     

array.addAll(Arrays.asList(text.split(“”))))

答案 4 :(得分:0)

使用设置为不重复元素

String text = "a b c a a b b b c d a z e q e m a m d z e"

Set<String> set = new HashSet<String>();
or change DTRING TO CHAR
        set .addAll(text);