我需要知道是否将数据存储在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]);
}
}
}
答案 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>
。class ArrayList<E> implements List<E>
interface List<E>
E get(int index)
原始类型的使用仅允许作为遗留代码兼容性的让步。强烈建议不要在将通用性引入Java编程语言之后编写的代码中使用原始类型。 未来版本的Java编程语言可能会禁止使用原始类型。
Effective Java 2nd Edition:第23项:不要在新代码中使用原始类型
如果您使用原始类型,则会失去仿制药的所有安全性和表现力。
[...]你应该倾向于使用接口而不是类来引用对象。 如果存在适当的接口类型,则应使用接口类型声明参数,返回值,变量和字段。
变量:除变量外,所有实例,类和类常量都是大小写混合,带有小写的第一个字母。
答案 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。
此外:
答案 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);
}