首页 > 代码库 > Collection与Arrays

Collection与Arrays

1. CollectionsArrays

集合框架中的工具类:特点:该工具类中的方法都是静态的。

Collections:常见方法:

1, 对list进行二分查找:

前提该集合一定要有序。

int binarySearch(list,key);

//必须根据元素自然顺序对列表进行升级排序

//要求list 集合中的元素都是Comparable 的子类。

int binarySearch(list,key,Comparator);

2,对list集合进行排序。

sort(list);

//list进行排序,其实使用的事list容器中的对象的compareTo方法

sort(list,comaprator);

//按照指定比较器进行排序

3,对集合取最大值或者最小值。

max(Collection)

max(Collection,comparator)

min(Collection)

min(Collection,comparator)
4,对list集合进行反转。

reverse(list);

5,对比较方式进行强行逆转。

Comparator reverseOrder();

Comparator reverseOrder(Comparator);

6,对list集合中的元素进行位置的置换。

swap(list,x,y);

7,对list集合进行元素的替换。如果被替换的元素不存在,那么原集合不变。

replaceAll(list,old,new);

8,可以将不同步的集合变成同步的集合。

Set synchronizedSet(Set<T> s)

Map synchronizedMap(Map<K,V> m)

List synchronizedList(List<T> list)

9. 如果想要将集合变数组:

可以使用Collection 中的toArray 方法。注意:是Collection不是Collections工具类

传入指定的类型数组即可,该数组的长度最好为集合的size。

 

Arrays:用于对数组操作的工具

1二分查找,数组需要有序

binarySearch(int[])

binarySearch(double[])

 

2数组排序

sort(int[])

sort(char[])……

2, 将数组变成字符串。

 toString(int[])

3, 复制数组。
 copyOf();

4, 复制部分数组。

copyOfRange():

5, 比较两个数组是否相同。

equals(int[],int[]);

6, 将数组变成集合。

List asList(T[]);

这样可以通过集合的操作来操作数组中元素,

但是不可以使用增删方法,addremove。因为数组长度是固定的,会出现

UnsupportOperationExcetion

可以使用的方法:containsindexOf。。。

如果数组中存入的基本数据类型,那么asList会将数组实体作为集合中的元素。

如果数组中的存入的引用数据类型,那么asList会将数组中的元素作为集合中

的元素。

 

import java.util.ArrayList;

import java.util.Collections;

import java.util.Arrays;

import java.util.List;

class Demo1

{

public static void main(String[] args)

{

ArrayList<Integer> list = new ArrayList<Integer>();

list.add(4);

list.add(3);

list.add(1);

list.add(2);

list.add(3);

// 排序

Collections.sort(list);

// 折半查找的前提是排序好的元素

System.out.println( Collections.binarySearch( list , 8 ) );  // 找不到返回-插入点-1

// 反序集合输出

Collections.reverse( list );

System.out.println( list );

// 求最值

System.out.println( Collections.max( list ) );   // 4

// fill()  使用指定的元素替换指定集合中的所有元素

// Collections.fill( list, 5 );

System.out.println( list );

 

// 将数组转换为集合

Integer is[] = new  Integer[]{6,7,8};

List<Integer> list2 =  Arrays.asList(is);

list.addAll( list2 );

System.out.println( list );

 

// List转换为数组

Object [] ins =  list.toArray();

System.out.println( Arrays.toString( ins ) );

   

 

}

}

集合的练习

问题: 定义一个Person数组,将Person数组中的重复对象剔除?

思路

1. 描述一个Person

2. 将数组转换为Arrays.asList() List

3. Set addAll( list )

4. hashCode()equals()

 

import java.util.Arrays;

import java.util.Set;

import java.util.List;

import java.util.HashSet;

 

// 1. 描述Person

class Person {

public String name;

public int age;

 

public Person() {

}

 

public Person(String name, int age) {

this.name = name;

this.age = age;

}

 

public String toString() {

 

return getClass().getName() + " : name=" + this.name + " age="

+ this.age;

 

}

 

// 4. 重写hashCodeequals()

public int hashCode() {

 

return this.age;

}

 

public boolean equals(Object o) {

Person p = null;

if (o instanceof Person)

p = (Person) o;

return this.name.equals(p.name) && (this.age == p.age);

}

}

 

class Demo2 {

public static void main(String[] args) {

Person[] ps = new Person[] { new Person("jack", 34),

new Person("lucy", 20), new Person("lili", 10),

new Person("jack", 34) };

// 遍历数组

System.out.println(Arrays.toString(ps));

// 2. 将自定义对象数组转换为List集合

List<Person> list = Arrays.asList(ps);

// 3. List转换为Set

Set<Person> set = new HashSet<Person>();

set.addAll(list);

System.out.println(set);

 

}

}

Collection与Arrays