如何使用数组列表?

我需要知道如果我的数据存储在一个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]); } } } 

下面的代码片段给出了一个例子,展示了如何从指定的索引处获取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>types来代替原始ArrayListtypes。
  • variables名称以小写字母开头
  • list声明为List<String> ,即接口types而不是实现typesArrayList<String>

参考

API:

  • Java集合框架教程
  • class ArrayList<E> implements List<E>
  • interface List<E>
    • E get(int index)
      • 返回列表中指定位置的元素。

不要使用原始types

  • JLS 4.8原始types

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

  • 有效的Java第二版:项目23:不要在新代码中使用原始types

    如果您使用原始types,则会丧失generics的所有安全性和performance力优势。

在types声明中优先使用实现类的接口

  • 有效的Java第2版:项目52:通过接口引用对象

    你应该倾向于使用接口而不是类来引用对象。 如果存在适当的接口types,那么参数,返回值,variables和字段都应该使用接口types来声明

命名约定

variables:除variables之外,所有实例,类和类常量都以小写首字母混合使用。

列表是元素的有序集合 。 您可以使用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. } 

您可以通过索引( System.out.println(S.get(0)); )获取您的string或遍历它:

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

有关遍历列表(及其含义)的其他方法,请参阅传统的for循环与Java中的Iterator 。

另外:

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

这应该做的伎俩:

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

将返回数组中的第一个项目。

要么

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

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

 List<String> S = new ArrayList<String>(); s.add("My text"); for (String item : S) { System.out.println(item); } 

首先你应该阅读集合框架教程 。

但是要回答你的问题,你应该这样做:

 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); } 

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); } } 

参考

首先,您需要定义哪些数据types需要保留在列表中。 正如你所提到的,数据将会是String,这个列表应该由Stringtypes组成。

那么如果你想得到列表中的所有元素,你只需要使用一个简单的for循环或每个循环遍历列表。

 List <String> list = new ArrayList<>(); list.add("A"); list.add("B"); for(String s : list){ System.out.println(s); } 

另外,如果你想使用一个原始的ArrayList而不是一个通用的ArrayList,你将不得不倒下该值。 当使用原始ArrayList时,所有元素都以Object的forms存储。

 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); } 

三线解决scheme,但工作得很好:

 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]); } 

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); } } }