Java Collections与Arrays的浅解

Collections与Arrays都是集合框架中的工具类

特点:

该工具类中的方法都是静态的。

Collections:

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[]);
这样可以通过集合的操作来操作数组中元素,
但是不可以使用增删方法,add,remove。因为数组长度是固定的,会出现
UnsupportOperationExcetion。
可以使用的方法:contains,indexOf。。。
如果数组中存入的基本数据类型,那么asList会将数组实体作为集合中的元素。
如果数组中的存入的引用数据类型,那么asList会将数组中的元素作为集合中
的元素。

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()

// 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. 重写hashCode和equals()
	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);

	}
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值