Java 如何删除字符串向量中所有最长的字符串

Java 如何删除字符串向量中所有最长的字符串,java,Java,//这个程序打印字符串向量中所有最短的元素 我想让这个程序打印向量中所有最短的字符串。输出应该是hello,test,JAVA。最后一个字不会被删除。有人能帮忙吗?我想情况很清楚。如果长度相同,则应将其移除 import java.util.Vector; class printAllSmallInVectorOfString { public static void main(String[] args) { Vector<String> v=ne

//这个程序打印字符串向量中所有最短的元素

我想让这个程序打印向量中所有最短的字符串。输出应该是
hello,test,JAVA
。最后一个字不会被删除。有人能帮忙吗?我想情况很清楚。如果长度相同,则应将其移除

import java.util.Vector;

class printAllSmallInVectorOfString
{
    public static void main(String[] args)
    {
        Vector<String> v=new Vector();

        v.addElement("hello");
        v.addElement("test");
        v.addElement("phytons");
        v.addElement("JAVA");
        v.addElement("Program");
        v.addElement("ultrons");


        String largest="";  // define largest

        for(int i=0 ; i < v.size() ; i++)
        {
            // checks if first element is longer
            if( largest.length() <  v.elementAt(i).length())
            {
                // largest stores the string
                largest=v.elementAt(i);
            }
            // condition for elements of same length
            else if(v.elementAt(i).length() == largest.length())   
            {
                System.out.println("The largest element so far is " + largest + " at index " + v.indexOf(largest ));
                System.out.println(v.elementAt(i) + " at index " + v.indexOf(v.elementAt(i)) + " is the same length as the largest element " + largest + "\n");
                // removes second element which is equal with longest
                 v.removeElementAt(i);
            }


        }
        // removes longest element
        v.removeElementAt(v.indexOf(largest));

         for(String z : v)
         System.out.println(z);


    }
}
import java.util.Vector;
类printAllSmallInVectorOfString
{
公共静态void main(字符串[]args)
{
向量v=新向量();
v、 补充(“你好”);
v、 附录(“测试”);
v、 附加元素(“植物”);
v、 附录(“JAVA”);
v、 附录(“程序”);
v、 附录(“ultrons”);
字符串最大值=”;//定义最大值
对于(int i=0;i
我会这样做:

public static void main(String[] args) throws Exception {
    final Collection<String> strings = Arrays.asList(
            "hello",
            "test",
            "phytons",
            "JAVA",
            "Program",
            "ultrons"
    );

    final int min = strings.stream()
            .mapToInt(String::length)
            .min()
            .getAsInt();

    final Collection<String> shortest = strings.stream()
            .filter(s -> s.length() == min)
            .collect(toList());

    shortest.forEach(System.out::println);
}
publicstaticvoidmain(字符串[]args)引发异常{
最终集合字符串=Arrays.asList(
“你好”,
“测试”,
“植物”,
“爪哇”,
“程序”,
“ultrons”
);
final int min=strings.stream()
.mapToInt(字符串::长度)
.min()
.getAsInt();
最终集合最短=strings.stream()
.filter(s->s.length()==min)
.collect(toList());
最短的.forEach(System.out::println);
}
首先,不要使用
向量

现在,获取
集合中
字符串的最小长度

然后取该长度的
字符串的
集合
过滤器


最后,循环并打印
集合的内容

这里是一个没有任何Java8特性的简单解决方案

public static void main(String[] args) {
    Vector<String> v = new Vector();

    v.addElement("hello");
    v.addElement("test");
    v.addElement("phytons");
    v.addElement("JAVA");
    v.addElement("Program");
    v.addElement("ultrons");

    System.out.println(keepShortest(v));
}

public static List<String> keepShortest(List<String> strings) {
    // Find length of shortest string
    int shortest = Integer.MAX_VALUE;
    for (String string : strings) {
        if (string.length() < shortest) {
            shortest = string.length();
        }
    }

    // Populate new list with shortest strings
    List<String> newList = new ArrayList<>();
    for (String string : strings) {
        if (string.length() == shortest) {
            newList.add(string);
        }
    }

    return newList;
}
publicstaticvoidmain(字符串[]args){
向量v=新向量();
v、 补充(“你好”);
v、 附录(“测试”);
v、 附加元素(“植物”);
v、 附录(“JAVA”);
v、 附录(“程序”);
v、 附录(“ultrons”);
系统输出println(keepShortest(v));
}
公共静态列表keepShortest(列表字符串){
//查找最短字符串的长度
int shortest=Integer.MAX_值;
for(字符串:字符串){
if(string.length()
如上所述,您需要:

  • 首先找到最短字符串的长度
  • 然后移除所有较长的字符串;或者使用长度相等的所有字符串填充新列表

不要使用
向量,它已被弃用。是的,我知道,但我这样做只是因为我将在几周后进行考试,学习指南中有一个问题要求我们这样做,以实际返回所有最短字符串的向量。我们的逻辑有缺陷。如果要打印向量中最短的字符串,首先使用一个循环来确定最短的字符串,然后使用另一个循环来删除所有较长的元素。我对集合还不是很好,但是没有办法将集合与vector@ColinAnacouraa是一个
集合
。这很容易混淆,因为它接受
列表
,并返回
列表
,但是也会改变输入。如果您返回一个
列表
,然后返回一个
新列表
,如果您更改输入,
返回void
@boris,您是对的;这可能有点令人困惑。我会换的。