collection集合
Collection派生出了两个子接口,一个是List另一个则是Set。
List:称为可重复集,顾名思义,该集合中是允许存放重复元素的,那么何为重复元素?重复元素指的并非是同一个元素,而是指equals方法比较为true的元素。
Set:称为不可重复集,所以,该集合中是不能将相同的元素存入集合两次,同List,这里相同指的也是两个元素的equals比较结果为true。
list:接口有两个实现类:ArrayList更适合于随机访问而LinkedList更适合于插入和删除
- E get(int index):获取集合中指定下标对应的元素,下标从0开始。
- E set(int index, E elment):将给定的元素存入给定位置,并将原位置的元素返回
-
- void add(int index,E element):
将给定的元素插入到指定位置,原位置及后续元素都顺序向后移动。
- E remove(int index):
删除给定位置的元素,并将被删除的元素返回。
subList获取的List与原List占有相同的存储空间,对子List的操作会影响的原List。
- List<Integer> list = new ArrayList<Integer>();
- for (int i = 0; i < 10; i++) {
- list.add(i);
- }
- System.out.println(list); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
- List<Integer> subList = list.subList(3, 8);
- System.out.println(subList); // [3, 4, 5, 6, 7]
- // subList获得的List和源List占有相同的数据空间
- for (int i = 0; i < subList.size(); i++) {
- subList.set(i, subList.get(i) * 10);
- }
- System.out.println(subList); // [30, 40, 50, 60, 70]
- System.out.println(list); // [0, 1, 2, 30, 40, 50, 60, 70, 8, 9]
- // 可以用于删除连续元素list.subList(3, 8).clear();
- System.out.println(list);
List转换为数组
- List<String> list = new ArrayList<String>();
- list.add("a");
- list.add("b");
- list.add("c");
- //通常我们传入的数组不需要给定长度
- String[] strArr = list.toArray(new String[] {}); System.out.println(Arrays.toString(strArr)); // [a, b, c]
数组转换为List
- String[] strArr = { "a", "b", "c" };
- List<String> list = Arrays.asList(strArr);
- System.out.println(list); // [a, b, c]
- // list.add("d"); // 会抛出UnsupportedOperationException
- // java.util.Arrays$ArrayList
- System.out.println(list.getClass().getName());
- List<String> list1 = new ArrayList<String>();
- list1.addAll(Arrays.asList(strArr));
时间: 2024-10-12 23:15:25