鱼C论坛

 找回密码
 立即注册
查看: 2617|回复: 0

[学习笔记] Java暑期学习Day36

[复制链接]
发表于 2017-8-11 22:02:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 马太效应 于 2017-8-11 22:02 编辑

今天是第36天,鼠标终于可以正常使用了


                               
登录/注册后可看大图


ArrayList


构造方法

ArrayList()
构造一个初始容量为十的空列表。
ArrayList(Collection<? extends E> c) 构造一个包含指定集合的元素的列表,
按照它们由集合的迭代器返回的顺序。
ArrayList(int initialCapacity)
构造具有指定初始容量的空列表。


  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;


  4. public class ArrayListDemo {

  5.         public static void main(String[] args) {
  6.                 /*
  7.                  * 当我们调用无参数构造方法来构造一个ArrayList对象的时候
  8.                  * 它会在内部分配一个初始大小为10的一个Object类型的数组
  9.                  *
  10.                  * 当添加的数据容量超过数组大小的时候,会产生一个新的数组,
  11.                  * 新的数组大小为原来数组大小的1.5倍,接着把原数组中的数据
  12.                  * 拷贝到新的数组中
  13.                  *
  14.                  *
  15.                  */
  16.                 List<String> nList=new ArrayList<String>();
  17.                 nList.add("panda");
  18.                 nList.add("apple");
  19.                 nList.add("banana");
  20.                 nList.add("peal");
  21.                 nList.add(1,"fish");
  22.                 nList.set(0, "Apanda");
  23.                 System.out.println("使用迭代器对象来进行统一的遍历");
  24.        Iterator<String> it=nList.iterator();
  25.        while(it.hasNext()){
  26.                String name=it.next();
  27.                System.out.println(name);
  28.        }
  29.                System.out.println("使用增持for循环进行遍历");
  30.                for(String name1:nList){
  31.                        System.out.println(name1);
  32.                }
  33.               
  34.                System.out.println("********************");
  35.                System.out.println(nList.indexOf("peal"));
  36.                System.out.println(nList.remove("Apanda"));
  37.                System.out.println(nList.remove(0));
  38.                System.out.println(nList.size());
  39.                System.out.println(nList.contains("Apanda"));
  40.                System.out.println(nList.get(0));
  41.                System.out.println(nList.isEmpty());
  42.                nList.clear();
  43.                System.out.println(nList.isEmpty());
  44.       
  45.         }

  46. }
复制代码
结果是——
使用迭代器对象来进行统一的遍历
Apanda
fish
apple
banana
peal
使用增持for循环进行遍历
Apanda
fish
apple
banana
peal
********************
4
true
fish
3
false
apple
false
true

1.数组在内存中是连续的线性空间,根据索引随机存取的速度快,如排序时使用。
2.在ArrayList内部数组长度不够时,会建立新数组,并将旧的数组的参考指定给新的数组。
  1. import java.util.ArrayList;
  2. import java.util.List;


  3. public class ArrayListDemo2 {

  4.         public static void main(String[] args) {
  5.                 List<Student> stuList=new ArrayList<Student>();
  6.                 Student stu1= new Student("zs",10);
  7.                 Student stu2= new Student("ls",20);
  8.                 Student stu3= new Student("jk",30);
  9.                 Student stu4= new Student("my",10);
  10.                 Student stu5= new Student("ry",20);
  11.                
  12.                 stuList.add(stu1);
  13.                 stuList.add(stu2);
  14.                 stuList.add(stu3);
  15.                 stuList.add(stu4);
  16.                 stuList.add(stu5);
  17.                 Student stu6=new Student("my",10);
  18.                 System.out.println(stuList.indexOf(stu6));
  19.                 System.out.println(stuList.contains(stu6));
  20.                 System.out.println(stuList.remove(stu6));
  21.                 System.out.println(stuList.indexOf(stu4));
  22.                 System.out.println(stuList.size());
  23.        
  24.                

  25.         }

  26. }
  27. class Student{
  28.         private String name;
  29.         public Student(String name, int age) {
  30.                 super();
  31.                 this.name = name;
  32.                 this.age = age;
  33.         }
  34.         private int age;
  35.         public String getName() {
  36.                 return name;
  37.         }
  38.         public void setName(String name) {
  39.                 this.name = name;
  40.         }
  41.         public int getAge() {
  42.                 return age;
  43.         }
  44.         public void setAge(int age) {
  45.                 this.age = age;
  46.         }
  47.        
  48.         @Override
  49.         public boolean equals(Object obj) {
  50.                 if (this == obj)
  51.                         return true;
  52.                 if (obj == null)
  53.                         return false;
  54.                 if (getClass() != obj.getClass())
  55.                         return false;
  56.                 Student other = (Student) obj;
  57.                 if (age != other.age)
  58.                         return false;
  59.                 if (name == null) {
  60.                         if (other.name != null)
  61.                                 return false;
  62.                 } else if (!name.equals(other.name))
  63.                         return false;
  64.                 return true;
  65.         }
  66. }
复制代码
结果是——
3
true
true
-1
4

3.语法细节
ArrayList 的父类是 AbstractList。

AbstractList的唯一构造方法的详细信息:
protected AbstractList()唯一的构造函数。
(用于子类构造函数的调用,通常是隐式的。)


-!-
public String toString()
    返回对象的字符串表示形式。 一般来说, toString方法返回一个“textually代表”这个对象的字符串。 结果应该是一个简明扼要的表达,容易让人阅读。 建议所有子类覆盖此方法。

    该toString类方法Object返回一个由其中的对象是一个实例,该符号字符`的类的名称的字符串@ ”和对象的哈希码的无符号的十六进制表示。 换句话说,这个方法返回一个等于下列值的字符串:
    getClass().getName() + '@' + Integer.toHexString(hashCode())

    结果——对象的字符串表示形式

LinkedList--链表

All implemented Interfaces:
Serializable
(可串行化的)

Cloneable  (可复制的)
Iterable<E>
(可迭代的)
Collection<E>
(集合)
Deque<E>
(双端队列)
List<E>
(序列)
Queue <E>
(队列)


构造方法
LinkedList() 构造一个空列表。
LinkedList(Collection<? extends E> c) 构造一个包含指定集合的元素的列表,
按照它们由集合的迭代器返回的顺序。

1.LinkedList类扩展AbstractSequentialList(其父类)并实现ListDeque接口<JDK8.0视角>。
2.LinkedList提供了一个链表数据结构。
3.除了继承的方法之外,LinkedList类还定义了一些有用的方法用于操作和访问容器中的数据。

4.LinkedList在操作List接口时,采用了链接结构,不会事先耗费内存,想要指定索引随机存取对象时,会比较没有效率,链接的每个元素会参考下一个元素,这有利于调整索引顺序。


  1. import java.util.Iterator;
  2. import java.util.LinkedList;

  3. public class LinkedListDemo1 {

  4.         /*
  5.          * LinkedList它内部封装的是双向链表
  6.          * 数据结构每个节点是一个Node对象,Node对象中封装的是你要添加的元素
  7.          * 还有一个指向上一个Node对象的引用和指向下一个Node对象的引用
  8.          *
  9.          * 不同的容器有不同的数据结构,不同的数据结果操作起来性能 是不一样的
  10.          *
  11.          * 链接数据结构,做插入、删除的效率比较高,但查询效率较低
  12.          *
  13.          * 数组结构,它做查询的时候效率高,因为可以通过下表直接找到元素 但插入和删除效率比较低,因为要做移位操作
  14.          */
  15.         public static void main(String[] args) {
  16.                 LinkedList<String> sList = new LinkedList<String>();
  17.                 sList.add("zs");
  18.                 sList.add("ls");
  19.                 sList.add("wu");
  20.                 sList.add("rs");
  21.                 sList.add("my");
  22.                 sList.add("jk");
  23.                 sList.addFirst("panda");
  24.                 sList.addLast("mandy");
  25.                 Iterator<String> it = sList.iterator();
  26.                 while (it.hasNext()) {
  27.                         String name = it.next();
  28.                         System.out.println(name);
  29.                 }
  30.                 System.out.println("*****************************************");
  31.                 for (Iterator<String> it2 = sList.iterator(); it2.hasNext();) {
  32.                         String name = it2.next();
  33.                         System.out.println(name);

  34.                 }
  35.                 System.out.println("*****************************************");
  36.                 for (String name : sList) {
  37.                         System.out.println(name);
  38.                 }
  39.                 System.out.println(sList.removeFirst());
  40.                 System.out.println(sList.size());
  41.                 sList.clear();
  42.                 System.out.println(sList.pollFirst());
  43.                 System.out.println(sList.size());

  44.         }

  45. }
复制代码
结果是——
panda
zs
ls
wu
rs
my
jk
mandy
*****************************************
panda
zs
ls
wu
rs
my
jk
mandy
*****************************************
panda
zs
ls
wu
rs
my
jk
mandy
panda
7
null
0

  

评分

参与人数 1鱼币 +4 收起 理由
小甲鱼 + 4

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-17 03:59

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表