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,您是对的;这可能有点令人困惑。我会换的。