use*_*796 710 java collections list
我们创建一个Set:
Set myset = new HashSet()
Run Code Online (Sandbox Code Playgroud)
我们如何List在Java中创建?
Dan*_*ton 917
List myList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
或者使用泛型(Java 7或更高版本)
List<MyType> myList = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
或者使用泛型(旧的Java版本)
List<MyType> myList = new ArrayList<MyType>();
Run Code Online (Sandbox Code Playgroud)
Aar*_*paa 437
此外,如果要创建包含内容的列表(尽管它将是固定大小):
List<String> messages = Arrays.asList("Hello", "World!", "How", "Are", "You");
Run Code Online (Sandbox Code Playgroud)
Ser*_*hyk 174
让我总结并添加一些内容:
1. new ArrayList<String>();
2. Arrays.asList("A", "B", "C")
Run Code Online (Sandbox Code Playgroud)
1. Lists.newArrayList("Mike", "John", "Lesly");
2. Lists.asList("A","B", new String [] {"C", "D"});
Run Code Online (Sandbox Code Playgroud)
不变的清单
1. Collections.unmodifiableList(new ArrayList<String>(Arrays.asList("A","B")));
2. ImmutableList.builder() // Guava
.add("A")
.add("B").build();
3. ImmutableList.of("A", "B"); // Guava
4. ImmutableList.copyOf(Lists.newArrayList("A", "B", "C")); // Guava
Run Code Online (Sandbox Code Playgroud)
空不可变列表
1. Collections.emptyList();
2. Collections.EMPTY_LIST;
Run Code Online (Sandbox Code Playgroud)
字符列表
1. Lists.charactersOf("String") // Guava
2. Lists.newArrayList(Splitter.fixedLength(1).split("String")) // Guava
Run Code Online (Sandbox Code Playgroud)
整数列表
Ints.asList(1,2,3); // Guava
Run Code Online (Sandbox Code Playgroud)
Ole*_*hov 46
要创建固定大小的非空列表(不支持添加,删除等操作):
List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported
Run Code Online (Sandbox Code Playgroud)
要创建非空的可变列表:
List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));
Run Code Online (Sandbox Code Playgroud)
使用新的List.of(...)静态工厂方法:
List<Integer> immutableList = List.of(1, 2);
List<Integer> mutableList = new ArrayList<>(List.of(3, 4));
Run Code Online (Sandbox Code Playgroud)
使用局部变量类型推断:
var list1 = List.of(1, 2);
var list2 = new ArrayList<>(List.of(3, 4));
var list3 = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
并遵循最佳做法......
从Java 5开始,泛型已成为语言的一部分 - 您应该使用它们:
List<String> list = new ArrayList<>(); // Good, List of String
List list = new ArrayList(); // Bad, don't do that!
Run Code Online (Sandbox Code Playgroud)
例如,程序到List界面:
List<Double> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
代替:
ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!
Run Code Online (Sandbox Code Playgroud)
Ada*_*icz 30
首先阅读本文,然后阅读本文和此内容.10次中有9次你将使用这两种实现中的一种.
实际上,只需阅读Sun的集合框架指南.
Ble*_*rta 21
//simple example creating a list form a string array
String[] myStrings = new String[] {"Elem1","Elem2","Elem3","Elem4","Elem5"};
List mylist = Arrays.asList(myStrings );
//getting an iterator object to browse list items
Iterator itr= mylist.iterator();
System.out.println("Displaying List Elements,");
while(itr.hasNext())
System.out.println(itr.next());
Run Code Online (Sandbox Code Playgroud)
Vit*_*nko 21
从Java 7开始,您可以对通用实例创建进行类型推断,因此无需在赋值的右侧复制泛型参数:
List<String> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
固定大小的列表可以定义为:
List<String> list = Arrays.asList("foo", "bar");
Run Code Online (Sandbox Code Playgroud)
对于不可变列表,您可以使用Guava库:
List<String> list = ImmutableList.of("foo", "bar");
Run Code Online (Sandbox Code Playgroud)
i_a*_*ero 17
List是一个类似的接口Set,具有ArrayList和LinkedList作为通用实现.
我们可以创建List作为:
List<String> arrayList = new ArrayList<>();
List<String> linkedList = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)
我们还可以创建一个固定大小的列表:
List<String> list = Arrays.asList("A", "B", "C");
Run Code Online (Sandbox Code Playgroud)
我们几乎总是使用ArrayList反对LinkedList实现:
LinkedList 当我们有很多元素时,会为对象使用大量空间并且表现不佳.LinkedList与O(1)相比,任何索引操作都需要O(n)时间ArrayList.Arrays.asList上面创建的列表不能在结构上进行修改,但仍可以修改其元素.
根据doc,该方法Collections.unmodifiableList返回指定列表的不可修改视图.我们可以得到它:
Collections.unmodifiableList(Arrays.asList("A", "B", "C"));
Run Code Online (Sandbox Code Playgroud)
如果我们使用Java 9,那么:
List<String> list = List.of("A", "B");
Run Code Online (Sandbox Code Playgroud)
如果我们在Java的10则该方法Collectors.unmodifiableList将返回在Java中9.检查推出了这款真正的不可修改的列表的实例回答了关于区别的详细信息Collections.unmodifiableList VS Collectors.unmodifiableList中的Java 10.
List list = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
或者使用泛型
List<String> list = new ArrayList<String>();
Run Code Online (Sandbox Code Playgroud)
当然,您也可以使用任何类型的变量替换字符串,例如Integer.
有时 - 但很少 - 而不是新的ArrayList,您可能需要一个新的LinkedList.从ArrayList开始,如果你遇到性能问题和证据表明列表存在问题,并且大量添加和删除到该列表 - 然后 - 不是之前 - 切换到LinkedList并查看是否有所改进.但总的来说,坚持使用ArrayList,一切都会好的.
一个例子:
List somelist = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
您可以查看List的javadoc,并查找Listjava api附带的接口的所有已知实现类.
使用Google Collections,您可以在Lists类中使用以下方法
import com.google.common.collect.Lists;
// ...
List<String> strings = Lists.newArrayList();
List<Integer> integers = Lists.newLinkedList();
Run Code Online (Sandbox Code Playgroud)
varargs初始化和初始化有重载Iterable<T>.
这些方法的优点是您不需要像使用构造函数那样显式指定泛型参数 - 编译器将根据变量的类型推断它.
小智 7
因为java中数组列表的声明就像
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable
Run Code Online (Sandbox Code Playgroud)
您可以通过多种方式在 Java 中创建和初始化数组列表。
1) List list = new ArrayList();
2) List<type> myList = new ArrayList<>();
3) List<type> myList = new ArrayList<type>();
4) Using Utility class
List<Integer> list = Arrays.asList(8, 4);
Collections.unmodifiableList(Arrays.asList("a", "b", "c"));
5) Using static factory method
List<Integer> immutableList = List.of(1, 2);
6) Creation and initializing at a time
List<String> fixedSizeList = Arrays.asList(new String[] {"Male", "Female"});
Again you can create different types of list. All has their own characteristics
List a = new ArrayList();
List b = new LinkedList();
List c = new Vector();
List d = new Stack();
List e = new CopyOnWriteArrayList();
Run Code Online (Sandbox Code Playgroud)
List<Object> nameOfList = new ArrayList<Object>();
Run Code Online (Sandbox Code Playgroud)
你需要导入List和ArrayList.
作为选项,您可以使用双括号初始化:
List<String> list = new ArrayList<String>(){
{
add("a");
add("b");
}
};
Run Code Online (Sandbox Code Playgroud)
使用Java 9,您可以执行以下操作来创建不可变的 List:
List<Integer> immutableList = List.of(1, 2, 3, 4, 5);
List<Integer> mutableList = new ArrayList<>(immutableList);
Run Code Online (Sandbox Code Playgroud)
可以通过多种方式创建列表:
1 - 构造函数初始化
List是一个接口,List的实例可以通过以下方式创建:
List<Integer> list=new ArrayList<Integer>();
List<Integer> llist=new LinkedList<Integer>();
List<Integer> stack=new Stack<Integer>();
Run Code Online (Sandbox Code Playgroud)
2-使用Arrays.asList()
List<Integer> list=Arrays.asList(1, 2, 3);
Run Code Online (Sandbox Code Playgroud)
3- 使用 Collections 类方法
空列表
List<Integer> list = Collections.EMPTY_LIST;
Run Code Online (Sandbox Code Playgroud)
或者
List<Integer> list = Collections.emptyList();
Collections.addAll(list = new ArrayList<Integer>(), 1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)
不可修改的列表
List<Integer> list = Collections
.unmodifiableList(Arrays.asList(1, 2, 3));
Run Code Online (Sandbox Code Playgroud)
单例列表
List<Integer> list = Collections.singletonList(2);
Run Code Online (Sandbox Code Playgroud)
您可以从下面的参考链接中找到更多方法。
参考:
https://www.geeksforgeeks.org/initializing-a-list-in-java/
有很多方法可以创建Set和List.HashSet和ArrayList只是两个例子.如今,将泛型与集合一起使用也是相当普遍的.我建议你看看它们是什么
这是java内置集合的一个很好的介绍.http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html
小智 5
List arrList = new ArrayList();
Run Code Online (Sandbox Code Playgroud)
它更好地使用泛型,如下所示:
List<String> arrList = new ArrayList<String>();
arrList.add("one");
Run Code Online (Sandbox Code Playgroud)
如果你使用LinkedList.
List<String> lnkList = new LinkedList<String>();
Run Code Online (Sandbox Code Playgroud)
使用Java 8做同样事情的更多选项,不是更好,更糟糕,只是不同,如果你想对列表做一些额外的工作,Streams将为你提供更多选择(过滤,映射,减少等)
List<String> listA = Stream.of("a", "B", "C").collect(Collectors.toList());
List<Integer> listB = IntStream.range(10, 20).boxed().collect(Collectors.toList());
List<Double> listC = DoubleStream.generate(() -> { return new Random().nextDouble(); }).limit(10).boxed().collect(Collectors.toList());
LinkedList<Integer> listD = Stream.iterate(0, x -> x++).limit(10).collect(Collectors.toCollection(LinkedList::new));
Run Code Online (Sandbox Code Playgroud)
以下是您可以创建列表的一些方法。
这将创建一个固定大小的列表,添加/删除元素是不可能的,java.lang.UnsupportedOperationException如果你尝试这样做,它会抛出一个。
List<String> fixedSizeList = Arrays.asList(new String[] {"Male", "Female"});
Run Code Online (Sandbox Code Playgroud)以下版本是一个简单的列表,您可以在其中添加/删除任意数量的元素。
List<String> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)这就是LinkedList在java中创建一个的方法,如果你需要对列表中的元素进行频繁的插入/删除,你应该使用LinkedList而不是ArrayList
List<String> linkedList = new LinkedList<>();
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
1829507 次 |
| 最近记录: |