API day01

Api day01

笔记

  1. List接口:

    • 继承自Collection接口,List集合是可重复集合,并且有序,并且提供了一套可以通过下标操作元素的方法

    • 常见的实现类:

      • java.util.ArrayList:内部使用数组实现,查询性能更好(直接下标查找)、增删性能不太好

      • java.util.LinkedList:内部使用链表实现,查询性能不太好,首尾增删元素性能更好

        注意:在对集合操作的性能没有特别苛刻要求时,通过选择ArrayList。

  2. List集合常见方法:

//创建一个String类型的结合
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        System.out.println(list);
  • get():根据下标获取元素
        /*
            E get(int index)
            获取指定下标处的元素
         */
        //获取List集合第三个元素
        String e = list.get(2);
        System.out.println(e);
  • set():将指定元素设置到指定位置 ,并返回被替换的元素(用时接收)
  /*
            E set(int index,E e)
            将给定元素设置到指定位置,返回值为被替换的元素
         */
        //[one,two,six,four,five]
        String old = list.set(2,"six");
        System.out.println(list);
        System.out.println(old);
  • 重载add():将指定元素添加到指定位置,理解为插入操作
  		 /*
            void add(int index,E e)
            插入操作,将给定元素插入到指定位置
         */
        //[one,two,three,six,four,five]
        list.add(3,"six");
        System.out.println(list);
  • 重载remove():删除并返回指定位置元素
        /*
            E remove(int index)
            删除并返回指定位置的元素
         */
        //[one,two,six,four,five]
        String old = list.remove(2);//删除第三个元素
        System.out.println(list);
        System.out.println("被删除的元素是:"+old);
  • subList():获取当前集合中指定范围内的子集(含头不含尾)
        /*
            List subList(int start,int end)
            获取当前List集合中指定范围内的子集.下标含头不含尾.
         */
        //获取[3-7]
        List<Integer> subList = list.subList(3,8);
        System.out.println(subList);
  1. 集合的排序:

    • Collections是集合的工具类,里面定义了很多静态方法用于操作集合

    • Collections.sort(List list)方法:可以对list集合进行自然排序(从小到大),Collections.sort(List list)方法要求List集合中的元素必须是可比较的,若不可比较则直接发生编译错误,不允许排序。判定是否可比较的标准为元素是否实现了java.util.Comparable接口。实际开发中,我们并不会让我们自己定义的类去实现Comparable接口的,因为这对我们的程序有侵入性。

        Comparator<Point> c = new Comparator<Point>() {
            public int compare(Point o1, Point o2) {
                //比较规则:点到原点的距离长的大
                int len1 = o1.getX()*o1.getX()+o1.getY()*o1.getY();
                int len2 = o2.getX()*o2.getX()+o2.getY()*o2.getY();
                return len1-len2;
            }
        };
        Collections.sort(list,c);
 侵入性:当我们调用某个API功能时,其要求我们为其修改其它额外的代码,这个现象叫做侵入性。侵入性越强则越不利于程序的后期维护,应尽量避免。
  • 建议使用重载的Collections.sort(List list, Comparator c)方法,可以通过Comparator来自定义规则
        Collections.sort(list,new Comparator<Point>() {
            public int compare(Point o1, Point o2) {
                int len1 = o1.getX()*o1.getX()+o1.getY()*o1.getY();
                int len2 = o2.getX()*o2.getX()+o2.getY()*o2.getY();
                return len1-len2;
            }
        });
  1. Set接口:

    • 继承自Collection接口,元素是不可重复的,并且是无序的

    • 常见的实现类:

      • HashSet类:
package apiday04;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Set集: 不可重复集合、并且无序
 */
public class SetDemo {
    public static void main(String[] args) {
        //小面试题: 如何去重?
        List<String> list = new ArrayList<>();
        list.add("one");
        list.add("two");
        list.add("three");
        list.add("four");
        list.add("five");
        list.add("two");
        System.out.println(list);

        Set<String> set = new HashSet<>();
        set.addAll(list);
        System.out.println(set);

        /*
        Set<String> set = new HashSet<>();
        set.add("one");
        set.add("two");
        set.add("three");
        set.add("four");
        set.add("five");
        set.add("two");
        set.add("five");
        System.out.println(set);
        */

    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值