如何删除数组中的单词?

时间:2019-04-20 05:25:27

标签: java arrays

给出一个数组。如何找到列表中所有大于三个字符的单词并将其添加到新列表中

public class RunnerClass {
   public static int counter;
   public static int index=0;
    public static void main(String[]args){
        /*String mainArr[]= new String[5];
        mainArr[0]="Taco";
        mainArr[1]="Pizza";
        mainArr[2]="Hi";
        mainArr[3]="tryy";
        mainArr[4]="live";*/
        String[]myWords = {"Hi", "taco", "g"};
        System.out.println(removeStopWord(myWords));
        System.out.println(counter);
    }

public static String[] removeStopWord(String [] arr){
    counter=0;
    //String [] methodArr = new String[counter];
    //int index=0;

    for(String keep : arr){
        if(3<keep.length()){
            counter++;
        }
    }
    String [] methodArr = new String[counter];
    index=0;


    for (int i = 0; i < arr.length ; i++){
        if (arr[i].length() > 3){
            methodArr[index]=arr[i];
            index++;
        }
    }

    return methodArr;

}

}

4 个答案:

答案 0 :(得分:1)

您可以使用java8流API过滤单词

struct stat

S_IRUSR是一个API,用于创建数组的数据流,然后通过传递谓词来过滤流并将其收集在集合中,从而使用过滤器API。

答案 1 :(得分:0)

您似乎在正确的轨道上。

您可以使用String#length()方法整理一下,以检查长度是否小于3。

您还可以通过将匹配的字符串添加到ArrayList中来循环一次,该ArrayList会自动增长。您可以在返回之前将ArrayList转换回String []。

这将消除对计数器的需求。如果要打印单词数,只需在返回ArrayList或String []后再打印它的大小即可。

答案 2 :(得分:0)

您可以使用ArrayList并流式处理API,

List<String> list=Arrays.asList("Hi", "taco", "g");
//filer the elements with length > 3 and then collect in a list       
List<String> result=list.stream().filter(ele->(ele.length())>3).collect(Collectors.toList());

答案 3 :(得分:0)

1。您的代码实际上运行正常。

也许您认为您的代码不起作用的原因是因为行System.out.println(removeStopWord(myWords));,该行可能会返回诸如[Ljava.lang.String;@15db9742之类的内容。如SO post所述,这就是 className + @ +数组的hashCode的十六进制

只需用System.out.println(Arrays.toString(removeStopWord(myWords)));替换该行,并在必要时导入java.util.Arrays

2。 ArrayList的替代方案

现在,您要在数组上循环两次,以首先计算有效字数,然后创建大小为counter的新数组。如果内存比速度更重要的是内存,那么这实际上是一件适当的事情(无论如何速度差异不大)。

如果您想要更优雅的东西,但由于动态内存分配而拥有更多的内存开销:

public static ArrayList<String> removeStopWord(String [] arr){
    ArrayList<String> methodList = new ArrayList<String>();

    for (int i = 0; i < arr.length ; i++){
        if (arr[i].length() > 3){
            methodList.add(arr[i]);
        }
    }


    return methodList;
}

使用System.out.println(Arrays.toString(removeStopWord(mainArr).toArray()));

打印数组