1. 程式人生 > 其它 >【R語言】用gbm包來提升決策樹能力

【R語言】用gbm包來提升決策樹能力

List介面

特點:有序、有下標、可重複

方法

除了繼承Collection介面的方法,List還有自己的方法
List的方法相比Collection添加了下標相關的方法,新增、刪除、獲取下標、獲取資料、列表迭代器等

void add(int index, Object o) //在index位置插入物件
boolean addAll(int index, Collection c) //將一個集合中的元素新增到此集合中的index位置
Object get(int index) // 返回集合中指定的位置的元素
List subList(int fromIndex, int toIndex) // 返回fromIndex到toIndex之間的元素集合
int indexOf(Object o) // 返回此列表中指定元素的第一次出現的索引,如果此列表不包含元素,則返回-1
ListIterator<E> listIterator() // 返回列表中的列表迭代器(按適當的順序) 
ListIterator<E> listIterator(int index) // 從列表中的指定位置開始,返回列表中的元素(按正確順序)的列表迭代器
E remove(int index) // 刪除該列表中指定位置的元素(可選操作)。  

實踐

Demo1

package com.qianfeng;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

/**
 * List新增、刪除、遍歷、判斷和獲取
 *
 * @since 2022-05-06
 */
public class ListDemo {
    public static void main(String[] args) {
        List li = new ArrayList<>();
        // 新增元素
        li.add("蘋果");
        li.add("三星");
        li.add("小米");
        li.add("華為");

        // 刪除元素
//        li.remove("三星");
        li.remove(0);

        // 遍歷
        // 由於List繼承於Collection,所以可以使用增強for迴圈遍歷
        System.out.println("===============使用增強for迴圈遍歷==================");
        for (Object o : li) {
            System.out.println(o.toString());
        }

        // 由於List有下標,所以可以使用for迴圈遍歷
        System.out.println("===============使用for迴圈遍歷==================");
        for (int i = 0; i < li.size(); i++) {
            System.out.println(li.get(i));
        }

        // 由於List繼承於Collection,所以可以使用迭代器遍歷
        System.out.println("===============使用迭代器遍歷==================");
        Iterator it = li.iterator();
        while (it.hasNext()) {
            System.out.println(it.next());
        }

        // List有列表迭代器,可以實現雙向遍歷、新增、刪除、更新等操作
        System.out.println("===============使用列表迭代器遍歷==================");
        ListIterator lit = li.listIterator();
        while (lit.hasNext()) {
            System.out.println(lit.nextIndex() + ":" + lit.next());
        }

        while (lit.hasPrevious()) {
            System.out.println(lit.previousIndex() + ":" + lit.previous());
        }

        // 判斷
        System.out.println(li.contains("索尼"));
        System.out.println(li.isEmpty());
        // 獲取
        System.out.println(li.indexOf("華為"));
    }
}

Demo2 數值列表

package com.qianfeng;

import java.util.ArrayList;
import java.util.List;

/**
 * 數值List新增刪除
 *
 * @since 2022-05-06
 */
public class ListDemo2 {
    public static void main(String[] args) {
        List list = new ArrayList<>();

        // 新增元素
        list.add(10);
        list.add(180);
        list.add(20);
        list.add(30);
        System.out.println(list);

        // 刪除元素
//        list.remove(0);
        // 這裡直接刪除180會報錯,可採用如下兩種方式,可以採用new的原因是remove中有一個equals的比較,Integer的equals方法就是比較值
        list.remove(new Integer(180));
//        list.remove(list.indexOf(180));
        System.out.println(list);

        // 取子列表,左閉右開
        System.out.println(list.subList(1, 3));
    }
}