集合II

本文深入探讨了数据结构的基本概念及其特点,并重点讲解了Java中List接口的三种实现方式:ArrayList、Vector与LinkedList,包括它们的底层实现原理、适用场景及如何在实际开发中进行选择。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

数据结构:

(1)组织数据的方式。

(2)常见的数据结构。

(3)数据结构的特点:

栈:先进后出

队列:先进先出

数组:查询快,增删慢

链表:查询慢,增删快

 

List的三个儿子(:

(1)List三个儿子的特点:

ArrayList:

           底层数据结构是数组, 查询快,增删慢。

          线程不安全,效率高。

Vector:

         底层数据结构是数组,查询快,增删慢。

         线程安全,效率低。

LinkedList:

       底层数据结构是链表,查询慢,增删快。

       线程不安全,效率高。

 

(2)你准备使用谁?

      要安全吗:

                  要:Vector

               不要:ArrayList或者LinkedList

             查询多:ArrayList

            增删多:LinkedList

如果你不知道,就用ArrayList。

 

(3)案例:

 ArrayList:

          //字存储符串并遍历:

         import java.util.ArrayList;

         import java.util.Iterator;

 

        public class ArrayListDemo {

                   public static void main(String[] args) {

                               ArrayList<String> array = new ArrayList<String>();

 

                               array.add("hello");

                               array.add("world");

                               array.add("java");

 

                              //迭代器

                             Iterator<String> it = array.iterator();

                             while (it.hasNext()) {

                                      String s = it.next();

                                                  System.out.println(s);

                             }

 

 

                            //普通for

                 

                             for (int x = 0; x < array.size(); x++) {

                                  String s = array.get(x);

                                                System.out.println(s);

                            }

 

                          //增强for

                          for (String s : array) {

                                     System.out.println(s); 

                            }

 

                }

      }

 

 

       // 存储自定义对象并遍历:

       import java.util.ArrayList;

       import java.util.Iterator;

        public class ArrayListTest {

                  public static void main(String[] args) {

                           // 创建集合对象

 

                         ArrayList<Student> array = new ArrayList<Student>               ();

 

                          // 创建元素

                         Student s1 = new Student("成龙", 26);

                         Student s2 = new Student("吴京", 23);

                         Student s3 = new Student("刘亦菲", 18);

 

                         // 添加元素

                        array.add(s1);

                        array.add(s2);

                       array.add(s3);

 

                      // 迭代器

                       Iterator<Student> it = array.iterator();

                       while (it.hasNext()) {

                               Student s = it.next();

                                         System.out.println(s.getName() + "---" + s.getAge());

                       }

 

 

 

                     // 普通for

                     for (int x = 0; x < array.size(); x++) {

                              Student s = array.get(x);

                                        System.out.println(s.getName() + "---" + s.getAge());

                              }

 

 

                             // 增强for

                             for (Student s : array) {

                                      System.out.println(s.getName() + "---" + s.getAge());

                              }

              }

       }

 

 

          LinkedList:

         //存储字符并遍历:

         import java.util.LinkedList;

         import java.util.Iterator;

 

 

       public class LinkedListDemo2 {

                   public static void main(String[] args) {

                                 LinkedList<String> link = new LinkedList<String>();

 

                                link.add("hello");

                                link.add("world");

                                link.add("java");

 

                                //迭代器

                               Iterator<String> it = link.iterator();

                               while (it.hasNext()) {

                                       String s = it.next();

                                                  System.out.println(s);

                                }

 

 

                               //普通for

                             for (int x = 0; x < link.size(); x++) {

                                   String s = array.get(x);

                                              System.out.println(s);

                                   }

 

                              //增强for

                              for (String s : link) {

                                    System.out.println(s); 

                              }

 

               }

      }

 

 

      存储自定义对象并遍历:

      import java.util.LinkedList;

      import java.util.Iterator;

 

 

      public class LinkedListTest {

                    public static void main(String[] args) {

                               // 创建集合对象

 

                               LinkedList<Student> link = new LinkedList<Student>               ();

 

                              // 创建元素

                             Student s1 = new Student("成龙", 26);

                             Student s2 = new Student("吴京", 23);

                             Student s3 = new Student("刘亦菲", 18);

 

                             // 添加元素

                            link.add(s1);

                            link.add(s2);

                            link.add(s3);

 

                            // 迭代器

                           Iterator<Student> it = link.iterator();

                           while (it.hasNext()) {

                                    Student s = it.next();

                                                  System.out.println(s.getName() + "---" + s.getAge());

                            }

 

 

 

                            // 普通for

                            for (int x = 0; x < link.size(); x++) {

                                 Student s = link.get(x);

                                               System.out.println(s.getName() + "---" + s.getAge());

                             }

 

 

                            // 增强for

                            for (Student s : link) {

                                   System.out.println(s.getName() + "---" + s.getAge());

                             }

                    }

       }

  

 

泛型:

(1)泛型是把明确数据类型的工作推迟到了创建对象或者调用方法时才去明确的一种特殊数据类型。

 

(2)泛型的格式:

<数据类型>

 

(3)泛型的好处:

A:优化了程序设计,解决了黄色警告线的问题。

B:把运行时期异常提前到了编译期。

C:避免了强制类型转换。

 

(4)什么时候用泛型?

看API,如果类或者接口后面有<>,说明这里用泛型。

一般来说,集合中用。

 

 

4:增强for:

(1)格式:

for(数组或者Collection集合中的元素的数据类型 变量 :数组或者Collection集合对象)

{

直接使用变量。这个时候,变量其实就是元素。

}

 

(2)好处:

方便了数组或者Collection集合的遍历。

 

(3)弊端:

在使用的时候,要注意,数组或者Collection集合对象不能为null。

 

 

 

 可变参:

(1)在定义功能的时候,我们不知道别人将来要传递多少参数,用可变参数。

 

(2)格式:

 

修饰符 返回值类型 方法名(数据类型... 变量)

{

...

}

 

注意:

A:这个变量本质是指定数据类型的一个数组。会自动把参数进行封装。

 

B:

如果一个方法有多个参数,可变参数必须放在最后。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值