集合、Map

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):将给定的元素存入给定位置,并将原位置的元素返回
    1. void add(int index,E element):

    将给定的元素插入到指定位置,原位置及后续元素都顺序向后移动。

     
    1. E remove(int index):

    删除给定位置的元素,并将被删除的元素返回。

subList获取的List与原List占有相同的存储空间,对子List的操作会影响的原List。

  1. List<Integer> list = new ArrayList<Integer>();
  2. for (int i = 0; i < 10; i++) {
  3.     list.add(i);
  4. }
  5. System.out.println(list); // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  6. List<Integer> subList = list.subList(3, 8);
  7. System.out.println(subList); // [3, 4, 5, 6, 7]
  8. // subList获得的List和源List占有相同的数据空间
  9. for (int i = 0; i < subList.size(); i++) {
  10.     subList.set(i, subList.get(i) * 10);
  11. }
  12. System.out.println(subList); // [30, 40, 50, 60, 70]
  13. System.out.println(list); // [0, 1, 2, 30, 40, 50, 60, 70, 8, 9]
  14. // 可以用于删除连续元素list.subList(3, 8).clear();
  15. System.out.println(list);

 List转换为数组    

  1. List<String> list = new ArrayList<String>();
  2. list.add("a");
  3. list.add("b");
  4. list.add("c");
  5. //通常我们传入的数组不需要给定长度
  6. String[] strArr = list.toArray(new String[] {});        System.out.println(Arrays.toString(strArr)); // [a, b, c]

数组转换为List

  1. String[] strArr = { "a", "b", "c" };
  2. List<String> list = Arrays.asList(strArr);
  3. System.out.println(list); // [a, b, c]
  4. // list.add("d"); // 会抛出UnsupportedOperationException
  5. //     java.util.Arrays$ArrayList
  6. System.out.println(list.getClass().getName());        
  7. List<String> list1 = new ArrayList<String>();
  8. list1.addAll(Arrays.asList(strArr));
posted @ 2016-08-04 00:07  java奋斗  阅读(324)  评论(0编辑  收藏  举报