java集合框架工具类Collections,集合的操作
1
import java.util.*; public class asList
{
public static void main(String args[])
{
// int arr[] = {1,2,3,4,45};
// List<int[]> list = Arrays.asList(arr);
// list.add("qq"); 这里不能添加,因为数组的长度是固定的 // Integer[] nums = {2,4,5,2};
// List<Integer> li = Arrays.asList(nums); //如果数组中的元素是对象,那么变成集合时,数组中的元素就直接转成集合中的元素
//如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在. String arr[] = {"abc","cc","kkk"};
List<String> list = Arrays.asList(arr);
list.contains("cc");
}
public static boolean myContains(String[] arr,String key)
{
for(int x=;x<arr.length;x++)
{
if(arr[x].equals(key))
return true;
}
return false;
}
}
数组变集合
import java.util.*; public class asList
{
public static void main(String args[])
{
// int arr[] = {1,2,3,4,45};
// List<int[]> list = Arrays.asList(arr);
// list.add("qq"); 这里不能添加,因为数组的长度是固定的 // Integer[] nums = {2,4,5,2};
// List<Integer> li = Arrays.asList(nums); //如果数组中的元素是对象,那么变成集合时,数组中的元素就直接转成集合中的元素
//如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在. String arr[] = {"abc","cc","kkk"};
List<String> list = Arrays.asList(arr);
list.contains("cc");
}
public static boolean myContains(String[] arr,String key)
{
for(int x=0;x<arr.length;x++)
{
if(arr[x].equals(key))
return true;
}
return false;
}
}
package pack; import java.util.*; public class DemoTwo {
public static void main(String args[]) {
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkk");
list.add("qq");
list.add("z");
/*
* Collections.sort(list); System.out.println(list);
*
* int a1 =Collections.binarySearch(list,"z"); //用binarySeratch都必须是有序的
*
* int a2 =Collections.binarySearch(list,"aaaa"); //这里返回-2 -(1) -1
* 返回它应该插入的地方 System.out.println(a2);
*
* int index = halfSearch(list,"cc"); //这个和binarySearch一样功能
* System.out.println(index);
*/ Collections.sort(list, new MyComparator()); // 这里
sop(list);
int index = halfSearch2(list, "aaa", new MyComparator());// 这里要和排序的方法一样
sop(index);
} public static void sop(Object obj) {
System.out.println(obj);
} public static int halfSearch1(List<String> list, String key) // 这里是按照字母顺序排序
{
int max, min, mid;
max = list.size() - 1;
min = 0;
while (min <= max) {
mid = (max + min) >> 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;
} public static int halfSearch2(List<String> list, String key,
Comparator<String> cmp) { // 这里是按照字母长度排序
int max, min, mid;
max = list.size() - 1;
min = 0;
while (min <= max) {
mid = (max + min) >> 1; // /2
String str = list.get(mid);
int num = cmp.compare(str, key);
if (num > 0)
max = mid - 1;
else if (num < 0)
min = mid + 1;
else
return mid;
}
return min;
}
} class MyComparator implements Comparator<String> {
public int compare(String s1, String s2) {
if (s1.length() > s2.length())
return 1;
if (s1.length() < s2.length())
return -1;
return s1.compareTo(s2);
}
}
package pack; import java.util.*; public class DemoTwo
{
public static void main(String args[])
{
//TreeSet<String> ts= new TreeSet<String>(new MyComparator());
//TreeSet<String> ts= new TreeSet<String>(Collections.reverseOrder());
//将已知比较器顺序逆转
TreeSet<String> ts= new TreeSet<String>(Collections.reverseOrder(new MyComparator())); ts.add("dsfdsf");
ts.add("fssd");
ts.add("wwsdf");
ts.add("ysfd");
ts.add("zdfdf");
System.out.println(ts);
}
} class MyComparator implements Comparator<String>
{
public int compare(String s1,String s2)
{
return s2.compareTo(s1);
}
}
集合变数组
package pack; import java.util.*; public class DemoTwo
{
public static void main(String args[])
{
/*
1当指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size.
2,最好创建一个刚刚好的数组最好
*/
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
// String arr[] = al.toArray(new String[5]);//这里是创建数组的对象和大小和类型
String[] arr = al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(arr));
}
} // 为什么集合变数组 为了限定对元素的操作.
List<String> list = new ArrayList<String>();
Collections.replaceAll(list,"aaa","litiepeng");//替换list集合里面的元素替
Collections.reverse(list);//倒转
Collections.fill(list,"pp"); //意思就是用东西替换集合里的所有元素
String max = Collections.max(list); //找出最大的来 String max = Collections.max(list,new MyComparator()); //找出最长的来
Collections.sort(list); //排序
Collections.sort(list,new MyComparator()); //按照自己的构造器排序
Collections.binarySearch(list,key);
Collections.binarySearch(list,key,new mycomparator());
Collections.fill(List<String> list,T obj); //把集合全部换成别的
Collections.max(Collection c)
Collections.max(Collection c,new myComparator())
同理min Collections.mix(Collection c)
Collections.mix(Collection c,new myComparator()) Collections.replaceAll(list,orld,new)用新的换旧的
Collections.reverse(List list);
Collections.reverseOrder() //返回一个构造器
Collections.reverseOrder(new myComparator())
Collections.swap(List<?> list, int i, int j) Collections.synchronizedList(list) Collections.shuffle(List<?> list) 使用默认随机源对指定列表进行置换。 意思就是把集合里面的东西随机再次排列一遍 Arrays.asList(数组) //数组变集合
Arrays.binarySearch() 数组变集合时
// int arr[] = {1,2,3,4,45};
// List<int[]> list = Arrays.asList(arr);
// list.add("qq"); 这里不能添加,因为数组的长度是固定的 // Integer[] nums = {2,4,5,2};
// List<Integer> li = Arrays.asList(nums); //如果数组中的元素是对象,那么变成集合时,数组中的元素就直接转成集合中的元素
//如果数组中的元素是基本数据类型,那么会将该数组作为集合中的元素存在. 集合变数组
// String arr[] = al.toArray(new String[5]);//这里是创建数组的对象和大小和类型
String[] arr = al.toArray(new String[al.size()]);
/*
1当指定类型的数组到底要定义多长呢?
当指定类型的数组长度小于了集合的size,那么该方法内部会创建一个新的数组,长度为集合的size.
2,最好创建一个刚刚好的数组最好
*/
/* 为什么集合变数组
为了限定对元素的操作. String[] arr = {"abc","cc","kkkk"};
List<String> list = Arrays.asList(arr);
list.contains("cc");
list.add("qq");//异常 UnsupportedOperationException,因为数组的长度是固定.
注意:将数组变成集合,不可以使用集合的增删方法.
其他的都可以用
contains.get.indexOf(),subList()
如果你增删,会发生异常
把数组变成list集合后有什么好处?
答:当要判断数组中是否存在某个元素.可以把数组变成list
可以使用集合的思想和方法来操作数组中的元素. 高级for循环
格式:
for(数组类型 变量名:被遍历的集合(Collection)或者数组)
{
} 对集合进行遍历.
只能获取集合元素,但是不能对集合进行操作.
迭代器除了遍历,还可以进行remove集合中元素的动作.
如果使用ListIterator,还可以在遍历过程中对集合进行增删改查的动作. 传统for和高级for有什么区别呢?
高级for有一个局限性,必须有被遍历的目标. 可变参数: 在使用时注意:可变参数一定要定义在参数列表的最后面
可变参数:其实就是上一种数组参数的简写形式.
不用每一次都手动的建立数组对象.
只要将要操作的元素作为参数传递即可
隐式将这些参数封装成了数组 public static void show(String str,int... arr)
java集合框架工具类Collections,集合的操作的更多相关文章
- JAVA基础学习之 Map集合、集合框架工具类Collections,Arrays、可变参数、List和Set集合框架什么时候使用等(4)
package com.itcast.test20140113; import java.util.ArrayList; import java.util.Arrays; import java.ut ...
- java基础37 集合框架工具类Collections和数组操作工具类Arrays
一.集合框架工具类:Collections 1.1.Collections类的特点 该工具类中所有的方法都是静态的 1.2.Collections类的常用方法 binarySearch(List< ...
- 集合框架工具类--Collections排序
package ToolCollectionsDemo; import java.util.ArrayList; import java.util.Collections; import java.u ...
- 操作集合的工具类Collections
1 操作集合的工具类Collections Java提供了一个操作Set.List和Map等集合的工具类:Collections,该工具类里提供了大量方法对集合元素进行排序.查询和修改等操 ...
- java之操作集合的工具类--Collections
Collections是一个操作Set.List和Map等集合的工具类. Collections中提供了大量方法对集合元素进行排序.查询和修改等操作,还提供了对集合对象设置不可变.对集合对象实现同步控 ...
- Java-集合第六篇操作集合的工具类Collections
1.Java提供了一个操作Set.List.Map等集合的工具类:Collections. 工具类中提供的方法主要针对Set.List.Map的排序.查询.修改等操作,以及将集合对象设置为不可变.对集 ...
- Java基础---泛型、集合框架工具类:collections和Arrays
第一讲 泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类 ...
- java集合框架——工具类
一.概述 JAVA集合框架中有两个很重要的工具类,一个是Collections,另一个是Arrays.分别封装了对集合的操作方法和对数组的操作方法,这些操作方法使得程序员的开发更加高效. public ...
- Java 集合框架工具类
Collections Arrays Collections 集合框架的工具类, 里面的方法都是静态的, 可以直接使用类名调用 常用方法 1. sort(List<T> list); // ...
随机推荐
- Webdriver控制翻页控件,并实现向前向后翻页功能,附上代码,仅供参考,其他类似日期控件的功能可以自己封装
新增输入与选择页面的html源码: <div style="margin-top:-60px;" class="modal-content" id=&qu ...
- asp脱离源代码管理
当项目中出现“未能找到与此解决方案关联的源代码管理提供程序.项目将视为不受源代码管理” 解决方法:1.vs2013打开项目, 2.提示“您正在打开的解决方案已绑定到以下Team Foundation ...
- HDU - 1045 Fire Net(搜索)
Description Suppose that we have a square city with straight streets. A map of a city is a square bo ...
- Ip 讲解
IP地址分类以及C类IP地址的子网划分 国际规定:把所有的IP地址划分为 A,B,C,D,E A类地址:范围从0-127,0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试环回用的 ...
- ZOJ 1967 POJ 2570 Fiber Network
枚举起点和公司,每次用DFS跑一遍图,预处理出所有的答案.询问的时候很快就能得到答案. #include<cstdio> #include<cmath> #include< ...
- 《剑指Offer》算法题——“旋转数组”的最小数字
题目描述 把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转.输入一个非递减序列的一个旋转,输出旋转数组的最小元素.例如数组{3,4,5,1,2}为{1,2,3,4,5}的一个旋转,该数 ...
- Javascript和HTML dom
今天在看DOM那一章的时候突然想到一个问题,众所周知的js的数据类型有两种:原始类型和对象类型.其中原始类型又包括以下几种类型:数字型.字符串型.布尔值.null和undefined.其中对象类型包括 ...
- c语言编译命令
第14章 预处理及用户配置文件 • 预处理命令通常在程序编译时进行一些符号处 理,其并不执行具体的硬件操作.C51语言中的预 处理命令主要有宏定义指令.文件包指令和条 件编译指令,还有其他一些调试时使 ...
- Ansible3:ansible.cfg配置说明【转】
Ansible默认安装好后有一个配置文件/etc/ansible/ansible.cfg,该配置文件中定义了ansible的主机的默认配置部分,如默认是否需要输入密码.是否开启sudo认证.actio ...
- E212:无法打开并写入文件
用vi编辑文件是 老师出现这样的错误 有些文件 需要root权限才能修改 切换成root权限就行了