arraylist到int?

rdlzhqv9  于 2021-07-14  发布在  Java
关注(0)|答案(3)|浏览(390)

我需要一些帮助,因为我对java不是很在行。我只需要返回长度为奇数的单词?但我犯了个错误。

  1. import java.io.*;
  2. import java.util.ArrayList;
  3. public class ArrayListOdd {
  4. public static ArrayList<Integer> lengths(ArrayList<String> list) {
  5. ArrayList<Integer> lengthList = new ArrayList<Integer>();
  6. for (String s : list)
  7. lengthList.add(s.length());
  8. return lengthList;
  9. }
  10. public static void main(String args[])
  11. {
  12. ArrayList<String>
  13. list = new ArrayList<String>();
  14. list.add("yoy");
  15. list.add("lmao");
  16. list.add("lol");
  17. list.add("kk");
  18. list.add("bbb");
  19. ArrayList<Integer> lengths = lengths(list);
  20. ArrayList oddList = new ArrayList();
  21. oddList = (ArrayList)list.clone();
  22. if (lengths % 2 != 0) {
  23. System.out.println("Strings with odd length are: " + oddList);
  24. }
  25. }
  26. }
p4tfgftt

p4tfgftt1#

您正试图对列表执行整数运算。'“Length”是arraylist,操作%不适用于它。另外,我认为你不应该在这里使用克隆,而只是重复一下 list 并检查每个元素是否是奇数-打印它或添加到另一个列表如果是。

cbjzeqam

cbjzeqam2#

最好实现一个单独的方法来复制奇数长度的字符串:

  1. public static List<String> oddLengths(List<String> list) {
  2. List<String> result = new ArrayList<>();
  3. for (String s : list) {
  4. if (s.length() % 2 != 0) {
  5. result.add(s);
  6. }
  7. }
  8. return result;
  9. }

那就直接调用这个方法 main 方法:

  1. List<String> list = new ArrayList<>();
  2. list.add("yoy");
  3. list.add("lmao");
  4. list.add("lol");
  5. list.add("kk");
  6. list.add("bbb");
  7. List<String> oddList = oddLengths(list);
  8. System.out.println("Strings with odd length are: " + oddList);

效率较低的方法是复制初始列表,然后使用 removeIf 操作:

  1. List<String> oddList2 = new ArrayList<>(list); // no need to use clone
  2. oddList2.removeIf(s -> s.length() % 2 == 0); // removing all strings with even length
  3. System.out.println("Strings with odd length are: " + oddList2);

使用带有过滤操作的流api可以方便地获得相同的结果:

  1. public static List<String> oddLengths(List<String> list) {
  2. return list.stream()
  3. .filter(s -> s.length() % 2 != 0)
  4. .collect(Collectors.toList());
  5. }
展开查看全部
jc3wubiy

jc3wubiy3#

修改长度方法

  1. public static void main(String []args){
  2. ArrayList<String>
  3. list = new ArrayList<String>();
  4. list.add("yoy");
  5. list.add("lmao");
  6. list.add("lol");
  7. list.add("kk");
  8. list.add("bbb");
  9. ArrayList<String> lengths = lengths(list);
  10. System.out.println(lengths.toString());
  11. }
  12. public static ArrayList<String> lengths(ArrayList<String> list) {
  13. ArrayList<String> lengthList = new ArrayList<String>();
  14. for (String s : list)
  15. if(s.length() % 2 != 0)
  16. lengthList.add(s);
  17. return lengthList;
  18. }
展开查看全部

相关问题