JAVA基础学习day17--集合工具类-Collections

一、Collection简述

1.1、Collection与Collections的区别

Collections是集合的静态工具类

Collection:是集合的顶级接口

二、Sort

2.1、sort

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;

/**
 * 对字符串进行自然排序
 *
 */
public class SortDemo1 {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("z");
        System.out.println("未排序"+list);
        //自然排序
        Collections.sort(list);
        System.out.println("排序后"+list);

    }

}

示例二、

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
/**
 * 按字符串长度排序,倒序
 *
 */
public class SortDemo2 {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("z");
        System.out.println("未排序"+list);
        Collections.sort(list, new StringLengthSort());
        System.out.println("排序后:"+list);
    }

}
class StringLengthSort implements Comparator<String>{

    @Override
    public int compare(String s1, String s2) {
        int num=new Integer(s2.length()).compareTo(new Integer(s1.length()));
        if(num==0){
            return s1.compareTo(s1);
        }
        return num;
    }

}

三、max

3.1、max

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
/*
 * 求最大值
 */
public class MaxDemo1 {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("z");
        Collections.sort(list);
        System.out.println(list);
        String max=Collections.max(list);
        System.out.println("max="+max);
    }

}
//结果
[abd, dee, fsdfdsfd, z, z, zfdsfd]
max=zfdsfd

对象求最大值:

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;

/**
 * 求对象的最大值:
 *1.类本身实现比较功能或者使用比较器
 *2.按对象的age求最大值
 */
class Person{
    private String name;
    private int age;
    public Person(String name, int age) {
        super();
        this.name = name;
        this.age = age;
    }
    public Person() {
        super();
        // TODO Auto-generated constructor stub
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }

}

public class MaxPersonTest {

    public static void main(String[] args) {
        ArrayList<Person> list =new ArrayList<Person>();
        list.add(new Person("lisi005",34));
        list.add(new Person("lisi002",16));
        list.add(new Person("lisi009",16));
        list.add(new Person("lisi001",23));
        System.out.println("未排序::");
        sop(list);
        //排序
        Collections.sort(list,new PersonCom());
        System.out.println("排序后:");
        sop(list);
        Person maxPerson=Collections.max(list, new PersonCom());
        System.out.println("年龄最大的人:"+maxPerson.getName()+"..."+maxPerson.getAge());
    }
    public static void sop(ArrayList<Person> list){
        for(Person p:list){
            System.out.println(p.getName()+"..."+p.getAge());
        }
    }

}
class PersonCom implements Comparator<Person>{
    public int compare(Person p1,Person p2){
        int num=new Integer(p1.getAge()).compareTo(new Integer(p2.getAge()));
        if(num==0){
            return p1.getName().compareTo(p2.getName());
        }
        return num;
    }
}

//结果:
未排序::
lisi005...34
lisi002...16
lisi009...16
lisi001...23
排序后:
lisi002...16
lisi009...16
lisi001...23
lisi005...34
年龄最大的人:lisi005...34

四、binarySearch

4.1、binarySearch

用二分搜索法搜索指定列表,以获得指定对象。在进行此调用之前,必须根据列表元素的自然顺序对列表进行升序排序(通过 sort(List) 方法)。如果没有对列表进行排序,则结果是不确定的。如果列表包含多个等于指定对象的元素,则无法保证找到的是哪一个。

参数:list - 要搜索的列表。key - 要搜索的键。返回:如果搜索键包含在列表中,则返回搜索键的索引;否则返回 (-(插入点) - 1)插入点 被定义为将键插入列表的那一点:即第一个大于此键的元素索引;如果列表中的所有元素都小于指定的键,则为 list.size()。注意,这保证了当且仅当此键被找到时,返回的值将 >= 0

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;

public class BinarSearchDemo {

    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("zf");
        Collections.sort(list);
        System.out.println(list);
        int index = Collections.binarySearch(list, "dee");// 1
        System.out.println("index=" + index);
        int index1 = Collections.binarySearch(list, "deed");
        System.out.println("index1=" + index1);// 没有返回-(插入点)一1 -(2)-1 结果-3

        // 测试
        int index2 = halfSearch(list, "z");
        System.out.println("index2=" + index2);// 3
        int index3 = halfSearch(list, "zdd");
        System.out.println("index3=" + index3);// -5

        // 测试
        int index4 = halfSearch2(list, "z",new MyComp());
        System.out.println("index4=" + index4);//
        int index5 = halfSearch2(list, "zdd",new MyComp());
        System.out.println("index5=" + index5);//

    }

    // 手动实现二分法查找
    public static int halfSearch(List<String> list, String key) {
        int max = list.size() - 1;
        int min = 0;
        int mid;
        while (min <= max) {
            mid = (min + max) >>> 1; // 除2
            String str = list.get(mid); // 中间值
            int num = str.compareTo(key);
            if (num > 0) {
                max = mid - 1;
            } else if (num < 0) {
                min = mid + 1;
            } else {
                return mid;
            }
        }
        return -min - 1; // 返回-(插入点)-1
    }

    // 手动实现二分法查找,添加比较器
    public static int halfSearch2(List<String> list, String key, Comparator<String> com) {
        int max = list.size() - 1;
        int min = 0;
        int mid;
        while (min <= max) {
            mid = (min + max) >>> 1; // 除2
            String str = list.get(mid); // 中间值
            int num = com.compare(str, key);
            if (num > 0) {
                max = mid - 1;
            } else if (num < 0) {
                min = mid + 1;
            } else {
                return mid;
            }
        }
        return -min - 1; // 返回-(插入点)-1
    }

}
class MyComp implements Comparator<String>{

    @Override
    public int compare(String s1, String s2) {
        int num=new Integer(s2.length()).compareTo(new Integer(s1.length()));
        if(num==0){
            return s1.compareTo(s1);
        }
        return num;
    }

}

[abd, dee, fsdfdsfd, z, zf, zfdsfd]
index=1
index1=-3
index2=3
index3=-5
index4=-7
index5=-4

五、fill

5.1、fill

使用指定元素替换指定列表中的所有元素。

此方法以线性时间运行。

参数:
list - 使用指定元素填充的列表。
obj - 用来填充指定列表的元素。 

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;

public class FillDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("zb");
        Collections.fill(list,"pp");
        System.out.println(list);

    }

}//结果:[pp, pp, pp, pp, pp, pp]

示例二、

package com.pb.sort.demo1;

import java.util.ArrayList;
/**
 * 将指定索引的元素替换
 *
 */

public class FillDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("zb");
        //将指定位置的元素替换
        list=fill(list,2,4,"hello");
        System.out.println(list);

    }
    public static ArrayList<String> fill(ArrayList<String> list, int start,int end,String key){
        for(int x=start;x<end;x++){
            list.set(x, key);

        }

        return list;

    }

}
//结果
[zfdsfd, dee, hello, hello, abd, zb]

六、replaceAll

6.1、replaceAll

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;

public class ReplaceAllDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("zb");
        Collections.replaceAll(list, "z", "java");
        System.out.println(list);

    }

}

七、reverse与reverseOrder

7.1、reverse

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;

public class ReplaceAllDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("zb");
        Collections.reverse(list);
        System.out.println(list);

    }

}

7.2、reverseOrder

返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序。(自然顺序是通过对象自身的 compareTo 方法强行排序的。)此方法允许使用单个语句,以逆自然顺序对实现了 Comparable 接口的对象 collection(或数组)进行排序(或维护)。例如,假设 a 是一个字符串数组。那么:

                Arrays.sort(a, Collections.reverseOrder());

将按照逆字典(字母)顺序对数组进行排序。

返回的比较器是可序列化的。

返回:
返回一个比较器,它强行逆转实现了 Comparable 接口的对象 collection 的自然顺序

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.TreeSet;

public class ReverseOrder {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("bdc");
        list.add("uioew");
        list.add("a");
        list.add("hg");
        Collections.sort(list);
        System.out.println(list);
        Collections.sort(list, Collections.reverseOrder());
        System.out.println(list);
        TreeSet<String> ts=new TreeSet<String>(Collections.reverseOrder(new StrLencom()));
        ts.add("cccccc");
        ts.add("dddd");
        ts.add("a");
        ts.add("hh");
        System.out.println(ts);

    }

}
class StrLencom implements Comparator<String>{

    @Override
    public int compare(String s1, String s2) {
        int num=new Integer(s1.length()).compareTo(new Integer(s2.length()));
        if(num==0){
            return s1.compareTo(s2);
        }
        return num;
    }

}
//结果:

[a, bdc, hg, uioew]
[uioew, hg, bdc, a]
[cccccc, dddd, hh, a]

八、swap

8.1、swap

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;

public class SwapDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("bdc");
        list.add("uioew");
        list.add("a");
        list.add("hg");
        System.out.println(list);
        //交换指定下位的2个元素
        Collections.swap(list, 2, 0);
        System.out.println(list);

    }

}
//结果
[bdc, uioew, a, hg]
[a, uioew, bdc, hg]

九、shuffle

9.1、shuffle

使用默认随机源对指定列表进行置换。所有置换发生的可能性都是大致相等的

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Random;

public class SwapDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("bdc");
        list.add("uioew");
        list.add("a");
        list.add("hg");
        System.out.println(list);
        //交换指定下位的2个元素
        Collections.shuffle(list);
        System.out.println(list);
        Collections.shuffle(list,new Random(list.size()+1));
        System.out.println(list);

    }

}

第二,第三都随机的每次运行不一样

[bdc, uioew, a, hg]
[hg, a, bdc, uioew]
[uioew, hg, a, bdc]

十、Arrays

10.1、Arrays

操作数组的静态工具类,和使用Collection方法一样

方法摘要
static

<T> List<T>
asList(T... a)
返回一个受指定数组支持的固定大小的列表。
static int binarySearch(byte[] a,
byte key)

使用二分搜索法来搜索指定的 byte 型数组,以获得指定的值。
static int binarySearch(byte[] a,
int fromIndex, int toIndex, byte key)

使用二分搜索法来搜索指定的 byte
型数组的范围,以获得指定的值。
static int binarySearch(char[] a,
char key)

使用二分搜索法来搜索指定的 char 型数组,以获得指定的值。
static int binarySearch(char[] a,
int fromIndex, int toIndex, char key)

使用二分搜索法来搜索指定的 char
型数组的范围,以获得指定的值。
static int binarySearch(double[] a,
double key)

使用二分搜索法来搜索指定的 double 型数组,以获得指定的值。
static int binarySearch(double[] a,
int fromIndex, int toIndex, double key)

使用二分搜索法来搜索指定的
double 型数组的范围,以获得指定的值。
static int binarySearch(float[] a,
float key)

使用二分搜索法来搜索指定的 float 型数组,以获得指定的值。
static int binarySearch(float[] a,
int fromIndex, int toIndex, float key)

使用二分搜索法来搜索指定的 float
型数组的范围,以获得指定的值。
static int binarySearch(int[] a,
int key)

使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。
static int binarySearch(int[] a,
int fromIndex, int toIndex, int key)

使用二分搜索法来搜索指定的 int
型数组的范围,以获得指定的值。
static int binarySearch(long[] a,
int fromIndex, int toIndex, long key)

使用二分搜索法来搜索指定的 long
型数组的范围,以获得指定的值。
static int binarySearch(long[] a,
long key)

使用二分搜索法来搜索指定的 long 型数组,以获得指定的值。
static int binarySearch(Object[] a,
int fromIndex, int toIndex, Object key)

使用二分搜索法来搜索指定数组的范围,以获得指定对象。

static int binarySearch(Object[] a, Object key)

使用二分搜索法来搜索指定数组,以获得指定对象。

static int binarySearch(short[] a,
int fromIndex, int toIndex, short key)

使用二分搜索法来搜索指定的 short
型数组的范围,以获得指定的值。
static int binarySearch(short[] a,
short key)

使用二分搜索法来搜索指定的 short 型数组,以获得指定的值。
static

<T>
int
binarySearch(T[] a,
int fromIndex, int toIndex, T key, Comparator<? super T> c)

使用二分搜索法来搜索指定数组的范围,以获得指定对象。

static

<T>
int
binarySearch(T[] a,
T key, Comparator<? super T> c)

使用二分搜索法来搜索指定数组,以获得指定对象。

static boolean[] copyOf(boolean[] original,
int newLength)

复制指定的数组,截取或用 false
填充(如有必要),以使副本具有指定的长度。
static byte[] copyOf(byte[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static char[] copyOf(char[] original,
int newLength)

复制指定的数组,截取或用 null
字符填充(如有必要),以使副本具有指定的长度。
static double[] copyOf(double[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static float[] copyOf(float[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static int[] copyOf(int[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static long[] copyOf(long[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static short[] copyOf(short[] original,
int newLength)

复制指定的数组,截取或用 0
填充(如有必要),以使副本具有指定的长度。
static

<T>
T[]
copyOf(T[] original,
int newLength)

复制指定的数组,截取或用 null
填充(如有必要),以使副本具有指定的长度。
static

<T,U>
T[]
copyOf(U[] original,
int newLength, Class<? extends T[]> newType)

复制指定的数组,截取或用 null 填充(如有必要),以使副本具有指定的长度。

static boolean[] copyOfRange(boolean[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static byte[] copyOfRange(byte[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static char[] copyOfRange(char[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static double[] copyOfRange(double[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static float[] copyOfRange(float[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static int[] copyOfRange(int[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static long[] copyOfRange(long[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static short[] copyOfRange(short[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static

<T>
T[]
copyOfRange(T[] original,
int from, int to)

将指定数组的指定范围复制到一个新数组。
static

<T,U>
T[]
copyOfRange(U[] original,
int from, int to, Class<? extends T[]> newType)

将指定数组的指定范围复制到一个新数组。

static boolean deepEquals(Object[] a1, Object[] a2)

如果两个指定数组彼此是深层相等 的,则返回 true

static int deepHashCode(Object[] a)

基于指定数组的“深层内容”返回哈希码。

static String deepToString(Object[] a)

返回指定数组“深层内容”的字符串表示形式。

static boolean equals(boolean[] a,
boolean[] a2)

如果两个指定的 boolean 型数组彼此相等,则返回
true
static boolean equals(byte[] a,
byte[] a2)

如果两个指定的 byte 型数组彼此相等,则返回
true
static boolean equals(char[] a,
char[] a2)

如果两个指定的 char 型数组彼此相等,则返回
true
static boolean equals(double[] a,
double[] a2)

如果两个指定的 double 型数组彼此相等,则返回
true
static boolean equals(float[] a,
float[] a2)

如果两个指定的 float 型数组彼此相等,则返回
true
static boolean equals(int[] a,
int[] a2)

如果两个指定的 int 型数组彼此相等,则返回
true
static boolean equals(long[] a,
long[] a2)

如果两个指定的 long 型数组彼此相等,则返回
true
static boolean equals(Object[] a, Object[] a2)

如果两个指定的 Objects 数组彼此相等,则返回 true

static boolean equals(short[] a,
short[] a2)

如果两个指定的 short 型数组彼此相等,则返回
true
static void fill(boolean[] a,
boolean val)

将指定的 boolean 值分配给指定 boolean
型数组的每个元素。
static void fill(boolean[] a,
int fromIndex, int toIndex, boolean val)

将指定的 boolean
值分配给指定 boolean 型数组指定范围中的每个元素。
static void fill(byte[] a,
byte val)

将指定的 byte 值分配给指定 byte 节型数组的每个元素。
static void fill(byte[] a,
int fromIndex, int toIndex, byte val)

将指定的 byte 值分配给指定 byte
型数组指定范围中的每个元素。
static void fill(char[] a,
char val)

将指定的 char 值分配给指定 char 型数组的每个元素。
static void fill(char[] a,
int fromIndex, int toIndex, char val)

将指定的 char 值分配给指定 char
型数组指定范围中的每个元素。
static void fill(double[] a,
double val)

将指定的 double 值分配给指定 double 型数组的每个元素。
static void fill(double[] a,
int fromIndex, int toIndex, double val)

将指定的 double 值分配给指定
double 型数组指定范围中的每个元素。
static void fill(float[] a,
float val)

将指定的 float 值分配给指定 float 型数组的每个元素。
static void fill(float[] a,
int fromIndex, int toIndex, float val)

将指定的 float 值分配给指定
float 型数组指定范围中的每个元素。
static void fill(int[] a,
int val)

将指定的 int 值分配给指定 int 型数组的每个元素。
static void fill(int[] a,
int fromIndex, int toIndex, int val)

将指定的 int 值分配给指定 int
型数组指定范围中的每个元素。
static void fill(long[] a,
int fromIndex, int toIndex, long val)

将指定的 long 值分配给指定 long
型数组指定范围中的每个元素。
static void fill(long[] a,
long val)

将指定的 long 值分配给指定 long 型数组的每个元素。
static void fill(Object[] a,
int fromIndex, int toIndex, Object val)

将指定的
Object 引用分配给指定 Object 数组指定范围中的每个元素。
static void fill(Object[] a, Object val)

将指定的 Object 引用分配给指定 Object 数组的每个元素。

static void fill(short[] a,
int fromIndex, int toIndex, short val)

将指定的 short 值分配给指定
short 型数组指定范围中的每个元素。
static void fill(short[] a,
short val)

将指定的 short 值分配给指定 short 型数组的每个元素。
static int hashCode(boolean[] a)

基于指定数组的内容返回哈希码。

static int hashCode(byte[] a)

基于指定数组的内容返回哈希码。

static int hashCode(char[] a)

基于指定数组的内容返回哈希码。

static int hashCode(double[] a)

基于指定数组的内容返回哈希码。

static int hashCode(float[] a)

基于指定数组的内容返回哈希码。

static int hashCode(int[] a)

基于指定数组的内容返回哈希码。

static int hashCode(long[] a)

基于指定数组的内容返回哈希码。

static int hashCode(Object[] a)

基于指定数组的内容返回哈希码。

static int hashCode(short[] a)

基于指定数组的内容返回哈希码。

static void sort(byte[] a)

对指定的 byte 型数组按数字升序进行排序。

static void sort(byte[] a,
int fromIndex, int toIndex)

对指定 byte
型数组的指定范围按数字升序进行排序。
static void sort(char[] a)

对指定的 char 型数组按数字升序进行排序。

static void sort(char[] a,
int fromIndex, int toIndex)

对指定 char
型数组的指定范围按数字升序进行排序。
static void sort(double[] a)

对指定的 double 型数组按数字升序进行排序。

static void sort(double[] a,
int fromIndex, int toIndex)

对指定 double
型数组的指定范围按数字升序进行排序。
static void sort(float[] a)

对指定的 float 型数组按数字升序进行排序。

static void sort(float[] a,
int fromIndex, int toIndex)

对指定 float
型数组的指定范围按数字升序进行排序。
static void sort(int[] a)

对指定的 int 型数组按数字升序进行排序。

static void sort(int[] a,
int fromIndex, int toIndex)

对指定 int
型数组的指定范围按数字升序进行排序。
static void sort(long[] a)

对指定的 long 型数组按数字升序进行排序。

static void sort(long[] a,
int fromIndex, int toIndex)

对指定 long
型数组的指定范围按数字升序进行排序。
static void sort(Object[] a)

根据元素的自然顺序对指定对象数组按升序进行排序。

static void sort(Object[] a,
int fromIndex, int toIndex)

根据元素的自然顺序对指定对象数组的指定范围按升序进行排序。
static void sort(short[] a)

对指定的 short 型数组按数字升序进行排序。

static void sort(short[] a,
int fromIndex, int toIndex)

对指定 short
型数组的指定范围按数字升序进行排序。
static

<T>
void
sort(T[] a,
Comparator<? super T> c)

根据指定比较器产生的顺序对指定对象数组进行排序。

static

<T>
void
sort(T[] a,
int fromIndex, int toIndex, Comparator<? super T> c)

根据指定比较器产生的顺序对指定对象数组的指定范围进行排序。

static String toString(boolean[] a)

返回指定数组内容的字符串表示形式。

static String toString(byte[] a)

返回指定数组内容的字符串表示形式。

static String toString(char[] a)

返回指定数组内容的字符串表示形式。

static String toString(double[] a)

返回指定数组内容的字符串表示形式。

static String toString(float[] a)

返回指定数组内容的字符串表示形式。

static String toString(int[] a)

返回指定数组内容的字符串表示形式。

static String toString(long[] a)

返回指定数组内容的字符串表示形式。

static String toString(Object[] a)

返回指定数组内容的字符串表示形式。

static String toString(short[] a)

返回指定数组内容的字符串表示形式。


十一、数组和集合相互转换

11.1、数组转集合

数组转集合不可以用集合的:增加,删除

package com.pb.sort.demo1;

import java.util.Arrays;
import java.util.List;

public class ArrayToList {

    public static void main(String[] args) {
        String[] arr={"bde","aab","bc","dd"};
        //转换集合 数组转集合不可以用集合的:增加,删除
        List<String> list=Arrays.asList(arr);
        list.set(2, "hello");
        System.out.println(list.contains("dd"));
        System.out.println(list);

    }

}

如果数组中的元素都是对象String,对象,那么变成集合时,数组中的元素就直接转成集合中的元素

如果数组中的元素都是基本数组类型,那么会将该数组作为集合的中元素存在

十二、增强for循环

12.1、增强for循环

package com.pb.sort.demo1;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

public class ForEachDemo {

    public static void main(String[] args) {
        ArrayList<String> list=new ArrayList<String>();
        list.add("zfdsfd");
        list.add("dee");
        list.add("z");
        list.add("fsdfdsfd");
        list.add("abd");
        list.add("z");
        for(String s:list){
            System.out.println(s);
        }
        Set<Integer> set=new HashSet<Integer>();
        set.add(3);
        set.add(2);
        set.add(2);
        set.add(5);
        for(Integer i:set){
            System.out.println(i);
        }
        Map<String,Integer> map=new HashMap<String,Integer>();
        map.put("001", 3);
        map.put("002", 5);
        map.put("006", 1);
        map.put("003", 113);
        for(String s:map.keySet()){
            System.out.println(s+".."+map.get(s));
        }
        for(Map.Entry<String, Integer> me:map.entrySet()){
            System.out.println(me.getKey()+"..."+me.getValue());
        }
    }

}

十三、可变参数

13.1、可变参数

package com.pb.sort.demo1;

public class ParamsDemo {

    public static void main(String[] args) {
        show();
        show(3,4,5);
        show(8,9,10,99);
    }
    public static void show(int ...arr){//..可变参数自动封装为数组
        System.out.println("长度"+arr.length);
        for(int i:arr){
            System.out.println(i+"...");
        }

    }

}
长度0
长度3
3...
4...
5...
长度4
8...
9...
10...
99...

可变参数类型必须为同一类型

package com.pb.sort.demo1;

public class ParamsDemo {

    public static void main(String[] args) {
        show("hello");
        show("java",3,4,5);
        show("world",8,9,10,99);
    }
    public static void show(String str,int ...arr){//..可变参数自动封装为数组 可变参数要定义在参数列表 的后面
        System.out.println("长度"+arr.length);
        for(int i:arr){
            System.out.println(i+"...");
        }

    }

}

十四、静态导入

14.1、静态导入

static import静态导入

当方法重名里:指定具备所属的对象或者类

package com.pb.sort.demo1;
import static java.util.Arrays.*; //导入Arrays类中的方法可以直接使用方法

import java.util.Arrays;

import static java.lang.System.*;
public class StaticImportDemo extends Object {

    public static void main(String[] args) {
        String [] arr={"abc","b","a","ab","d"};
        //直接使用排序方法
        sort(arr);
        int index=binarySearch(arr, "d");
        System.out.println("index="+index);
        //静态导入了System.可以直接使用
        out.println(Arrays.toString(arr)); //显示的输入使用哪个类的哪个方法

    }

}
时间: 2024-08-10 17:08:51

JAVA基础学习day17--集合工具类-Collections的相关文章

Java从零开始学二十四点(集合工具类Collections)

一.Collections简介 在集合的应用开发中,集合的若干接口和若干个子类是最最常使用的,但是在JDK中提供了一种集合操作的工具类 —— Collections,可以直接通过此类方便的操作集合 二.Collections类的常用方法及常量 No. 方法 类型 描述 1 public static final List EMPTY_LIST 常量 返回一个空的List集合 2 public static final Set EMPTY_SET 常量 返回空的Set集合 3 public sta

java集合工具类---Collections/Arrays

/* *Collections用于操作List/Set的工具类 *Arrays用于操作数组的工具类 */ package pack; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.Comparator; import java.util.List; import java.util.TreeSet; public class Main { pu

java基础学习——19、String类

之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础.在Java进阶中,我将对Java基础进行补充,并转向应用层面. 大部分编程语言都能够处理字符串(String).字符串是有序的字符集合,比如"Hello World!".在Java中,字符串被存储为String类对象.调用字符串对象的方法,可以实现字符串相关的操作. String类包含在java.lang包中.这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class).我

java集合(工具类Collections)

/* *1 Collections.sort(list集合,比较器); *sort方法不仅可以对list进行自然排序,还可以根据需求定义比较器进行排序. *sort方法不能对Set集合进行排序. *binarySearch方法对集合进行插入,且保证集合有序,如果查找的元素不存在 *则返回比该元素大一个位置的元素的下标加一的相反数,他的原理是折半查找. *fill方法可以将list集合中所有的元素替换成指定元素. *练习,将集合中部分元素替换成指定元素. *replaceAll方法将某一元素替换成

Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权限修饰符,默认访问, 类,方法,成员变量 private 权限修饰符,私有访问, 方法,成员变量 static 静态修饰符 方法,成员变量 final 最终修饰符 类,方法,成员变量,局部变量 abstract 抽象修饰符 类 ,方法 我们编写程序时,权限修饰符一般放于所有修饰符之前,不同的权限修饰

Java基础学习之--理解Object类

看Java API的Object类, 一共11个方法.按使用的频度排名: toString() 这个方法最常用在打日志,定位代码问题. equals()和hashCode(), 这两个方法的使用经典例子是HashMap的源码 public V put(K key, V value) { if (table == EMPTY_TABLE) { inflateTable(threshold); } if (key == null) return putForNullKey(value); int h

Java8集合框架——集合工具类Collections内部方法浅析

本文的目录结构: 零:Collections 的官方注释 一.Algorithms(算法类操作) 01.排序 sort 02.二分查找 binarySearch 03.列表反转 reverse 04.元素重排列 shuffle 05.元素交换 swap 06.列表填充 fill 07.元素复制 copy 08.最小/最大元素查找 min/max 09.数组旋转 rotate 10.元素替换 replaceAll 11.子列表匹配 二.Unmodifiable Wrappers(不可变包装类) 三

黑马程序员--Java基础学习笔记【Object类、String类】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- Object类 在Java类继承结构中,java.lang.Object类位于顶端. 所有类都直接或间接继承Object类. (接口不能继承Object类,接口中隐含定义了Object类的所有公共方法,但是全抽象) Object类型的引用变量可以指向任何类型对象. Object类成员方法 public String toString() { return getClass().getName(

Java基础学习笔记十七 集合框架(三)之Map

Map接口 通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图. Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储. Map中的集合,元素是成对存在的(理解为夫妻).每个元素由键与值两部分组成,通过键可以找对所对应的值. Collection中的集合称为单列集合,Map中的集合称为双列集合. 需要注意的是,Map中的集合不能包含重复的键,值可以重复:每个键只能对应一个值. Map中