如何在Java中使用数组列表?

时间:2010-04-23 08:34:36

标签: java arraylist

我需要知道是否将数据存储在ArrayList中,我需要获取存储在其中的值。

例如:如果我有这样的数组列表

      ArrayList A = new ArrayList();
      A = {"Soad", "mahran"};

我希望得到每个String元素,我该怎么做?

我已尝试通过以下代码执行此操作:

package arraylist;

import java.util.ArrayList;

public class Main {

        public static void main(String[] args) {
        ArrayList S = new ArrayList();

        String A = "soad ";
        S.add(A);
        S.add("A");
        String F = S.toString();
        System.out.println(F);
        String [] W = F.split(",");
        for(int i=0 ; i<W.length ; i++) {
           System.out.println(W[i]);
        }
    }
}

10 个答案:

答案 0 :(得分:52)

以下代码段给出了一个示例,说明如何从指定索引处的List获取元素,以及如何使用高级for-each循环遍历所有元素:

    import java.util.*;

    //...

    List<String> list = new ArrayList<String>();
    list.add("Hello!");
    list.add("How are you?");

    System.out.println(list.get(0)); // prints "Hello!"

    for (String s : list) {
        System.out.println(s);
    } // prints "Hello!", "How are you?"

请注意以下事项:

  • 使用通用List<String>ArrayList<String>类型代替原始ArrayList类型。
  • 变量名称以小写
  • 开头
  • list被声明为List<String>,即接口类型而非实现类型ArrayList<String>

参考

API:

不要使用原始类型

  • JLS 4.8 Raw Types

      

    原始类型的使用仅允许作为遗留代码兼容性的让步。强烈建议不要在将通用性引入Java编程语言之后编写的代码中使用原始类型。 未来版本的Java编程语言可能会禁止使用原始类型。

  • Effective Java 2nd Edition:第23项:不要在新代码中使用原始类型

      

    如果您使用原始类型,则会失去仿制药的所有安全性和表现力。

首选接口到类型声明

中的实现类
  • Effective Java 2nd Edition:Item 52:通过接口引用对象
      

    [...]你应该倾向于使用接口而不是类来引用对象。 如果存在适当的接口类型,则应使用接口类型声明参数,返回值,变量和字段。

Naming conventions

  

变量:除变量外,所有实例,类和类常量都是大小写混合,带有小写的第一个字母

答案 1 :(得分:6)

List是有序的Collection元素。您可以使用add方法添加它们,并使用get(int index)方法检索它们。您还可以迭代List,删除元素等。以下是使用List的一些基本示例:

List<String> names = new ArrayList<String>(3); // 3 because we expect the list 
    // to have 3 entries.  If we didn't know how many entries we expected, we
    // could leave this empty or use a LinkedList instead
names.add("Alice");
names.add("Bob");
names.add("Charlie");
System.out.println(names.get(2)); // prints "Charlie"
System.out.println(names); // prints the whole list
for (String name: names) {
    System.out.println(name);  // prints the names in turn.
}

答案 2 :(得分:3)

您可以通过索引(System.out.println(S.get(0));)获取字符串或迭代它:

for (String s : S) {
  System.out.println(s);
}

有关迭代列表的其他方法(及其含义),请参阅traditional for loop vs Iterator in Java

此外:

  • 您不应该使用以大写字母开头的变量名称
  • 您应该对数组列表进行参数化:ArrayList<String> list = new ArrayList<String>();
  • 您应该熟悉Java的广泛API文档(又名Javadoc),例如Java 5Java 6

答案 3 :(得分:2)

这应该可以解决问题:

String elem = (String)S.get(0);

将返回数组中的第一项。

或者

for(int i=0 ; i<S.size() ; i++){
     System.out.println(S.get(i));
}

答案 4 :(得分:1)

如果您使用Java 1.5或更高版本,则可以使用:

List<String> S = new ArrayList<String>();
s.add("My text");

for (String item : S) {
  System.out.println(item);
}

答案 5 :(得分:1)

您首先应阅读collections framework tutorial

但要回答你的问题,你应该怎么做:

ArrayList<String> strings = new ArrayList<String>();
strings.add("String1");
strings.add("String2");

// To access a specific element:
System.out.println(strings.get(1));
// To loop through and print all of the elements:
for (String element : strings) {
    System.out.println(element);
}

答案 6 :(得分:1)

  

object get(int index)用于返回存储在的对象   调用集合中的指定索引。

代码段:

import java.util.*;


class main
{
    public static void main(String [] args)
    {
        ArrayList<String> arr = new ArrayList<String>();
        arr.add("Hello!");
        arr.add("Ishe");
        arr.add("Watson?");

        System.out.printf("%s\n",arr.get(2)); 

        for (String s : arr) 
        {
            System.out.printf("%s\n",s);
        } 
    }
}

答案 7 :(得分:1)

三线解决方案,但效果很好:

int[] source_array = {0,1,2,3,4,5,6,7,8,9,10,11};
ArrayList<Integer> target_list = new ArrayList<Integer>();
for(int i = 0; i < source_array.length; i++){
    target_list.add(random_array[i]);
}

答案 8 :(得分:0)

Java 8在Iterable接口中引入了forEach()的默认实现,您可以通过声明式方法轻松完成。

  List<String> values = Arrays.asList("Yasir","Shabbir","Choudhary");

  values.forEach( value -> System.out.println(value));

以下是Iterable接口的代码

  default void forEach(Consumer<? super T> action) {
    Objects.requireNonNull(action);
    for (T t : this) {
        action.accept(t);
    }
}

<强> Reference

答案 9 :(得分:0)

首先,您需要定义需要在列表中保留的数据类型。正如您所提到的那样,数据将是String,列表应该是String类型。

然后,如果你想获得列表的所有元素,你必须使用一个简单的for循环或每个循环遍历列表。

List <String> list = new ArrayList<>();
list.add("A");
list.add("B");

for(String s : list){
    System.out.println(s);
}

此外,如果要使用原始ArrayList而不是通用ArrayList,则必须向下转换值。使用原始ArrayList时,所有元素都以Object的形式存储。

List list = new ArrayList();
list.add("A");
list.add("B");

for(Object obj : list){
    String s = (String) obj; //downcasting Object to String
    System.out.println(s);
}