【问题标题】:Use string from arrayList使用 arrayList 中的字符串
【发布时间】:2013-12-03 12:09:44
【问题描述】:

我有一个 ArrayList,我在其中添加类似 [string1 string2 string3 code] 的字符串。这段代码只是我给每个字符串的一个数字。但是这段代码是我必须用来删除或使用字符串的。

假设我有一个带有下一个字符串的数组列表:

String_1 = string1 string2 string3 1
String_2 = string4 string5 string6 2
String_3 = string7 string8 string9 3

现在,如果我想删除 String_2,我必须这样做:delete string "code" 在这种情况下为 delete string 2。这将从arrayList 中删除String_2。 另外,如果我想从数组列表中提取 String_1 并将其设置为字符串,我必须使用代码来完成。

那么,在 java 中实现这一点的方法是什么?也许对你们中的许多人来说很容易,但我是新手,arrayList 对我来说仍然有点困难。

【问题讨论】:

    标签: java string arraylist


    【解决方案1】:

    首先,这更像是一个地图的用例,您的代码是键,字符串是值。见http://docs.oracle.com/javase/7/docs/api/java/util/Map.html

    Map<Integer, String> map = new HashMap<Integer, String>();
    map.put(1, "string1");
    map.put(2, "string2");
    map.get(1)
    ...
    

    第二种方法是创建一个新对象,将代码保存为整数和字符串,如

    public class StringHolder {
    int code;
    String string;
    
    // constructor
    // setter and getter
    }
    

    然后使用 for-each 循环遍历您的数组列表并将对象的代码与给定的代码进行比较。

    或者,粗鲁的,不推荐的方法:做一些疯狂的字符串操作来找出你的代码在字符串中的位置。确实,不要这样做。

    【讨论】:

    • 我不能使用这个map方法,我必须创建一个ArrayList,因为我必须引用其他类的构造函数。那么,另一种不用地图的方法呢?
    • 另外,我必须能够列出在控制台上显示的 arraylist 中的所有字符串,每个字符串在字符串之后的代码
    • 您也可以在地图中引用自己的类:示例:Map myMap = new HashMap()
    • 向我们展示 OwnClass!或者像我的类 StringHolder 一样更改它
    • 我可能错了,但 ArrayList 是否更适合地图值,而不仅仅是一个字符串。这就是示例的样子
    【解决方案2】:

    如果你必须用ArrayList 来做,我会建议这样:

    public static void main(String[] args) {
        List<String> yourData = new ArrayList<String>();
        yourData.add("string1 string2 string3 1");
        yourData.add("string4 string5 string6 2");
        yourData.add("string7 string8 string9 3");
    
        Iterator<String> dataIterator = yourData.iterator();
        while(dataIterator.hasNext()) {
            String d = dataIterator.next();
            if(d.endsWith("2")) {
                dataIterator.remove();
            }
        }
    }
    

    这假定代码是一个字符串,并且始终是数据的最后一个字。

    【讨论】:

      【解决方案3】:

      试试这个:

      List<String> stringsArray = new ArrayList<String>();
      stringsArray.add("string1 string2 string3 1");
      stringsArray.add("string4 string5 string6 2");
      stringsArray.add("string7 string8 string9 3");
      Iterator<String> iter = stringsArray.iterator();
      
      while( iter.hasNext() ) {
      String s = iter.next();
      if( s.endsWith("1") ) {
         iter.remove();
        }
      }
      

      【讨论】:

      • 这会导致并发修改异常。
      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 2014-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      相关资源
      最近更新 更多