我们创建一个Set为:

Set myset = new HashSet()

我们如何在Java中创建一个列表?


当前回答

就像java中数组列表的声明一样

public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, Serializable  

有许多方法可以在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();

其他回答

有很多方法可以创建Set和List。HashSet和ArrayList就是两个例子。现在在集合中使用泛型也相当普遍。我建议你看看它们是什么

这是对java内置集合的一个很好的介绍。http://java.sun.com/javase/6/docs/technotes/guides/collections/overview.html

在Java 8中

创建一个固定大小的非空列表(不支持添加、删除等操作):

List<Integer> list = Arrays.asList(1, 2); // but, list.set(...) is supported

创建一个非空的可变列表:

List<Integer> list = new ArrayList<>(Arrays.asList(3, 4));

在Java 9中

使用一个新的List.of(…)静态工厂方法:

List<Integer> immutableList = List.of(1, 2);

List<Integer> mutableList = new ArrayList<>(List.of(3, 4));

在Java 10中

使用局部变量类型推断:

var list1 = List.of(1, 2);

var list2 = new ArrayList<>(List.of(3, 4));

var list3 = new ArrayList<String>();

并遵循最佳实践……

不要使用原始类型

从Java 5开始,泛型就成为了语言的一部分——你应该使用它们:

List<String> list = new ArrayList<>(); // Good, List of String

List list = new ArrayList(); // Bad, don't do that!

编程到接口

例如,编程到List接口:

List<Double> list = new ArrayList<>();

而不是:

ArrayList<Double> list = new ArrayList<>(); // This is a bad idea!

你可以在这里使用双大括号初始化:

List<String> list = new ArrayList<String>(){
  {
   add("a");
   add("b");
  }
};

有时候,你可能想要一个新的LinkedList,而不是一个新的ArrayList。从ArrayList开始,如果你有性能问题,并且有证据表明是这个列表出了问题,然后在这个列表上进行大量的添加和删除,然后-不是之前-切换到LinkedList,看看情况是否有所改善。但总的来说,还是用数组列表就好了。

使用Eclipse Collections,你可以创建一个这样的List:

List<String> list1 = Lists.mutable.empty();
List<String> list2 = Lists.mutable.of("One", "Two", "Three");

如果你想要一个不可变列表:

ImmutableList<String> list3 = Lists.immutable.empty();
ImmutableList<String> list4 = Lists.immutable.of("One", "Two", "Three");

您可以通过使用原语列表来避免自动装箱。下面是创建int列表的方法:

MutableIntList list5 = IntLists.mutable.empty();
MutableIntList list6 = IntLists.mutable.of(1, 2, 3);

ImmutableIntList list7 = IntLists.immutable.empty();
ImmutableIntList list8 = IntLists.immutable.of(1, 2, 3);

所有8个原语都有变体。

MutableLongList longList       = LongLists.mutable.of(1L, 2L, 3L);
MutableCharList charList       = CharLists.mutable.of('a', 'b', 'c');
MutableShortList shortList     = ShortLists.mutable.of((short) 1, (short) 2, (short) 3);
MutableByteList byteList       = ByteLists.mutable.of((byte) 1, (byte) 2, (byte) 3);
MutableBooleanList booleanList = BooleanLists.mutable.of(true, false);
MutableFloatList floatList     = FloatLists.mutable.of(1.0f, 2.0f, 3.0f);
MutableDoubleList doubleList   = DoubleLists.mutable.of(1.0, 2.0, 3.0);

注意:我是Eclipse Collections的提交者。