好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Java集合的Collection接口和List接口详解

1集合的概念

把集合看做是一个容器,集合不是一个类,是一套集合框架,框架体系包含很多的集合类,java api提供了 集合存储任意类型(基本包装类型,引用类型) 集合对元素的增删查改操作起来非常方便的,专门提供很多方便操作的方法 开发中经常集合来操作数据的,开发地位比较高的,考虑对数据的操作效率上的问题

2 集合的父类Collection接口

2.1常用方法

boolean add(E e) 添加某个元素 addAll(元素) 添加一个集合 remove(object) 删除一个元素 removeAll(collection) 删除一个集合 c.clear(); //移除所有 isEmpty() 判断是否为空

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

     public static void main(String[] args) {

         //创建集合

         Collection c = new ArrayList();

         //添加

         c.add( "张三" );

         c.add( 10 );

         c.add( false );

         c.add( 'a' );

         System.out.println(c);

//        addAll(元素) 添加一个集合

         Collection c2 = new ArrayList();

         c2.add( "hello" );

         c2.add( "world" );

         c2.add( "java" );

         c.addAll(c2);

         System.out.println(c);

         //删除

         System.out.println( "删除张三元素是否成功:" + c.remove( "张三2" ));

         System.out.println(c);

         c.removeAll(c2);

         System.out.println( "移除c2集合:" + c);

         //清空和判断是否为空

//        c.clear(); //移除所有

//        System.out.println(c); //[]

         System.out.println(c.isEmpty()); //判断集合中的元素是否为空,为空返回true,否则false

         System.out.println(c.contains( "张三222" )); //是否包含某个指定的元素,是返回true,否则false

         System.out.println( "获取集合中的元素个数:" + c.size()); //leng属性

     }

2.2遍历 

使用foreach 遍历 使用迭代器遍历 使用toArray()方法转成数组,再遍历. 使用for遍历

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

public static void main(String[] args) {

     Collection c = new ArrayList();

     c.add( "张三" );

     c.add( "李四" );

     c.add( "王五" );

     System.out.println(c);

     //foreach遍历方式

     System.out.println( "-------------1" );

     for (Object obj : c){

         System.out.println(obj);

     }

     //iterator方法,方式二

     System.out.println( "-------------2" );

     Iterator it = c.iterator();

     while (it.hasNext()){

         Object obj = it.next();

         System.out.println(obj);

     }

     System.out.println( "-------------3" );

     //方式三,toArray

     Object[] objs = c.toArray();

     for (Object o : objs){

         System.out.println(o);

     }

     System.out.println( "-------------4" );

     //方式四

     for (Iterator iterator  = c.iterator();iterator.hasNext();){

         Object obj = iterator.next();

         System.out.println(obj);

     }

     System.out.println( "-------------5" );

     for (Iterator iterator = c.iterator();iterator.hasNext(); System.out.println(iterator.next())){}

 

}

3 List接口

List接口继承了Collection接口,所以Collection接口的方法List都可以使用.

3.1List接口常用方法

添加

boolean add(E e) 添加一个元素 void add(int index, E element) 添加某个元素到指定位置

boolean addAll(Collection<? extends E> c) 添加一个集合

boolean-addAll(int index, Collection<? extends E> c) 添加一个集合到指定位置

删除

E remove(int index) 删除指定位置的元素 boolean remove(Object o) 删除某个元素 boolean removeAll(Collection<?> c) 删除一个集合

修改

E set(int index, E element)

获取

E get(int index) int size() 其他 int indexOf(Object o) int lastIndexOf(Object o) List subList(int fromIndex, int toIndex)

3.2遍历

E get(int index) + int size() ListIterator listIterator() ListIterator listIterator(int index)

员工类:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

package listdemo;

import java.util.Objects;

public class Employee {

     //员工属性, id name age salary

     private Integer id;

     private String name;

     private Integer age;

     private Double salary;

     public Employee() {

     }

     public Employee(Integer id, String name, Integer age, Double salary) {

         this .id = id;

         this .name = name;

         this .age = age;

         this .salary = salary;

     }

     public Integer getId() {

         return id;

     }

     public void setId(Integer id) {

         this .id = id;

     }

     public String getName() {

         return name;

     }

     public void setName(String name) {

         this .name = name;

     }

     public Integer getAge() {

         return age;

     }

     public void setAge(Integer age) {

         this .age = age;

     }

     public Double getSalary() {

         return salary;

     }

     public void setSalary(Double salary) {

         this .salary = salary;

     }

     @Override

     public boolean equals(Object o) {

         if ( this == o) return true ;

         if (o == null || getClass() != o.getClass()) return false ;

         Employee employee = (Employee) o;

         return Objects.equals(id, employee.id) &&

                 Objects.equals(name, employee.name) &&

                 Objects.equals(age, employee.age) &&

                 Objects.equals(salary, employee.salary);

     }

     @Override

     public int hashCode() {

         return Objects.hash(id, name, age, salary);

     }

     @Override

     public String toString() {

         return "Employee{" +

                 "id=" + id +

                 ", name='" + name + '\ '' +

                 ", age=" + age +

                 ", salary=" + salary +

                 '}' ;

     }

}

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

public static void main(String[] args) {

         //创建一个list集合

         List list = new ArrayList();

         //添加的方法

         list.add( "hello" );

         list.add( "java" );

         list.add( 1 , "world" ); //添加到指定的位置的元素,添加到第二个位置

         list.add( "html" );

         System.out.println(list);

         List list2 = new ArrayList();

         list2.add( "test1" );

         list2.add( "test2" );

         list2.add( "test3" );

//        list.addAll(list2); //添加一个集合

//        System.out.println(list);

         list.addAll( 2 ,list2); //添加一个新集合到第一个老集合中指定的位置,下标为2

         System.out.println(list);

         //删除

         // *      boolean remove(Object o)

         System.out.println(list.remove( "java" ));

         System.out.println(list);

         // *      E remove(int index)

         Object obj = list.remove( 1 );

         System.out.println(obj); //world

         System.out.println(list);

         // *       boolean removeAll(Collection<?> c)

         list.removeAll(list2);

         System.out.println( "删除新集合之后:" + list);

         //修改

         // *       E set(int index, E element)

         Object o = list.set( 1 , "编程语言" );

         System.out.println(o);

         System.out.println( "修改之后:" + list);

         // 其他

         // *       int indexOf(Object o) 从前面往后某个元素的位置

         // *       int lastIndexOf(Object o) 从后面往前面找某个元素的位置

         // *        List<E> subList(int fromIndex, int toIndex)

         List list3 = new ArrayList();

         list3.add( "张三" );

         list3.add( "李四" );

         list3.add( "王五" );

         list3.add( "赵六" );

         list3.add( "小编" );

         int i = list3.indexOf( "李四2222" );

         System.out.println( "李四的位置:" + i);

         System.out.println( "找王五的下标位置:" + list3.lastIndexOf( "王五" ));

         System.out.println(list3);

         List newsList = list3.subList( 1 , 4 ); //从老集合中截取1-3的位置的元素,并返回一个新的集合

         System.out.println(newsList); //1,2的位置的元素,3不包括,

     }

List的遍历

E get(int index) + int size() ListIterator listIterator() ListIterator listIterator(int index) iterator(); toArray(); foreach toString for()

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

package listdemo;

import java.util.ArrayList;

import java.util.List;

import java.util.ListIterator;

/**

  *

  * 遍历

  *  *       E get(int index) + int size()

  *  *      ListIterator<E> listIterator()

  *  *      ListIterator<E> listIterator(int index)

  *          iterator();

  *          toArray();

  *          foreach

  *          toString

  *          for()

  *          for()

  *

  */

public class ListDemo02 {

     public static void main(String[] args) {

         //E get(int index) + int size()

         List list = new ArrayList();

         list.add( "张三" );

         list.add( "李四" );

         list.add( "王五" );

         ListIterator listIterator1 = list.listIterator( 1 );

         if (listIterator1.hasNext()){

             System.out.println( "从第一个元素开始取出:" +listIterator1.next());

         }

         if (listIterator1.hasNext()){

             System.out.println( "继续取下一个元素:" +listIterator1.next());

         }

 

         //size获取集合中元素的个数

         System.out.println(list.size());

         //get(索引)获取指定索引的元素

//        Object o = list.get(0);

//        System.out.println(o); //张三

//        o = list.get(1);

//        System.out.println(o); //李四

//        o = list.get(2);

//        System.out.println(o); //王五

         //以上出现重复,使用循环解决,结合size+get方法

         for ( int i = 0 ; i < list.size(); i++) {

             Object o1 = list.get(i);

             System.out.println(o1);

         }

         List list2 = new ArrayList();

         list2.add( "hello" );

         list2.add( "world" );

         list2.add( "java" );

         ListIterator listIterator = list2.listIterator(); //列表迭代器方法,返回迭代器对象

         //正向遍历

         while (listIterator.hasNext()) { //判断集合中是否有可取的下一个元素,如果有

             Object o = listIterator.next(); //取出第一个元素

             System.out.println(o);

         }

         System.out.println( "------------------------" );

         //逆序遍历,在使用hasPrevious(),previous(),先正序遍历才可以使用这个

         while (listIterator.hasPrevious()){

             Object obj = listIterator.previous();

             System.out.println(obj);

         }

     }

}

4 集合中元素的去重

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

package listdemo;

import java.util.ArrayList;

import java.util.List;

/**

  * 去除集合中重复的元素

  */

public class ListDemo03 {

     public static void main(String[] args) {

         List list = new ArrayList();

         list.add( new Employee( 101 , "张三" , 20 , 2000.0 ));

         list.add( new Employee( 102 , "李四" , 30 , 3000.0 ));

         list.add( new Employee( 103 , "王五" , 20 , 2000.0 ));

         list.add( new Employee( 103 , "王五" , 20 , 2000.0 ));

         //创建一个新的集合

         List newList = new ArrayList();

         for (Object obj : list){

             if (!newList.contains(obj)){

                 newList.add(obj);

             }

         }

         list = newList; //把新集合的数据赋值给到老集合

         //遍历老集合

        for (Object obj : list){

            System.out.println(obj);

         }

         //第二种去除重复的方式

         //冒泡,选择,比较equlas

         //根据选择排序的思想,从第一个元素依次和后面的每一个元素

         for ( int i = 0 ; i < list.size(); i++) {

             for ( int j = i+ 1 ; j < list.size(); j++) {

                 //进行比较,如果第一个元素和第二个元素是相等

                 //把第二个元素删除

                 if (list.get(i).equals(list.get(j))){

                     list.remove(j);

                     j--;

                 }

             }

         }

         for (Object obj : list){

             System.out.println(obj);

         }

     }

}

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!  

原文链接:https://blog.csdn.net/Walker_sis/article/details/123332486

查看更多关于Java集合的Collection接口和List接口详解的详细内容...

  阅读:13次