Map知识点Utilities后续整理(关于Collections,Array,增强for循环)
一:介绍
1.介绍
里面都是静态方法。
可以直接调用。
Collections是集合框架中的一个工具类。该类中的方法都是静态的
提供的方法中有可以对list集合进行排序,二分查找等方法。
通常常用的集合都是线程不安全的。因为要提高效率。 如果多线程操作这些集合时,可以通过该工具类中的同步方法,将线程不安全的集合,转换成安全的。
二:Collections程序
1.sort的使用
除了使用自然排序,还可以使用的是添加比较器。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
public class Test66 {
public static void main(String[] args) {
sortDemo1();
}
public static void sortDemo1(){
ArrayList<String> al=new ArrayList<>();
al.add("abbdd");
al.add("o");
al.add("bcd");
al.add("bqpr");
System.out.println("随机打印:"+al);
Collections.sort(al); //基础的自然排序
System.out.println("基础的自然排序"+al);
Collections.sort(al,new StrLenComparator());//先根据长度排序
System.out.println("先根据长度排序"+al); //
}
}
class StrLenComparator 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);
} }
2.运行程序

3.binarySearch方法
import java.util.ArrayList;
import java.util.Collections; public class Test67 {
public static void main(String[] args) {
int index=halfDemo1();
System.out.println("index="+index);
}
public static int halfDemo1(){
ArrayList<String> al=new ArrayList<>();
al.add("abbdd");
al.add("o");
al.add("bcd");
al.add("bqpr");
Collections.sort(al);
int index=Collections.binarySearch(al, "bqpr");//需要已排序
return index;
}
}
4.运行的结果

5.max的使用
依然分两种使用方式。
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List; public class Test68 { public static void main(String[] args) {
maxDemo();
}
public static void maxDemo(){
List<String> list = new ArrayList<String>();
list.add("abcd");
list.add("aaa");
list.add("zz");
list.add("kkkkk");
list.add("qq");
list.add("z");
Collections.sort(list);
System.out.println(list);
//基础的max
String max1 = Collections.max(list);
System.out.println("max1="+max1);
//调用比较器的max
String max2 = Collections.max(list,new StrLenComparator2());
System.out.println("max2="+max2);
} }
class StrLenComparator2 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);
} }
6.reverseOrder方法
使用StrLenComparator比较器之后在进行逆序。
就是在reverse之后在逆向排序输出。
import java.util.Collections;
import java.util.Iterator;
import java.util.TreeSet;
public class Test69 {
public static void main(String[] args) {
orderDemo();
}
public static void orderDemo(){
TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(new StrLenComparator()));
ts.add("abcde");
ts.add("aaa");
ts.add("k");
ts.add("cc");
Iterator it = ts.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
7.运行结果

8.toArray方法
为什么要将集合变数组?
为了限定对元素的操作。不需要进行增删了。
import java.util.ArrayList;
import java.util.Arrays; public class Test70 {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
String[] arr = al.toArray(new String[al.size()]);
System.out.println(Arrays.toString(arr));
} }
9.运行结果

三:Arrays程序
1.toString
import java.util.Arrays;
public class Test71 {
public static void main(String[] args) {
int[] arr={1,4,2,7,4};
String str=Arrays.toString(arr);
System.out.println("str="+str);
}
}
2.运行结果

3.asList
将数组变成list集合
注意:将数组变成集合,不可以使用集合的增删方法。
import java.util.Arrays;
import java.util.List;
public class Test72 {
public static void main(String[] args) {
//int
int[] nums1 = {2,4,5};
List<int[]> li = Arrays.asList(nums1);
System.out.println(li);
//Integer
Integer[] nums2={3,6,5};
List<Integer> li2=Arrays.asList(nums2);
System.out.println(li2);
//String
String[] arr={"dsds","jun","opu"};
List<String> liArr=Arrays.asList(arr);
System.out.println(liArr); }
}
4.运行结果以及解析

四:增强for循环
1.String的
import java.util.ArrayList;
public class Test73 {
public static void main(String[] args) {
ArrayList<String> al = new ArrayList<String>();
al.add("abc1");
al.add("abc2");
al.add("abc3");
for(String s : al)
{
System.out.println(s);
}
System.out.println(al);
}
}
2.map
import java.util.HashMap;
import java.util.Map;
import java.util.Set; public class Test74 {
public static void main(String[] args) {
Map<Integer,String> hm=new HashMap<>();
hm.put(1, "zhangsan");
hm.put(2, "lisi");
hm.put(3, "wangwu");
//keySet
Set<Integer> keyset=hm.keySet();
for(Integer i : keyset){
System.out.println(hm.get(i));
}
//=============
System.out.println("==========");
//entrySet
for(Map.Entry<Integer, String> entry:hm.entrySet() ){
System.out.println(entry.getKey()+":"+entry.getValue());
} } }
3.运行结果

五:静态导入
1.格式
import static java.lang.System.*;//导入了System类中所有静态成员。
2.使用
out.println(“al”);
Map知识点Utilities后续整理(关于Collections,Array,增强for循环)的更多相关文章
- Java集合、Iterator迭代器和增强for循环整理
集合 集合,集合是java中提供的一种容器,可以用来存储多个数据. 数组的长度是固定的.集合的长度是可变的.集合中存储的元素必须是引用类型数据 1.1 ArrayList集合存储元素 pac ...
- JavaSE Collections类 , Iterator迭代器 , 增强for循环
Collections 它是集合的工具类,为集合体系扩展了一些其他的方法.类中都是静态的方法,可以使用类名直接调用. 可变参数 在JDK1.5之后,如果我们定义一个方法需要接受多个参数,并且多个参数类 ...
- 增强for循环、Map接口遍历、可变參数方法
增强for循环 1.for循环能做得事情.增强for循环大部分都能做(假设要想获得下标的时候就必须使用简单for循环了) 2.增强for有时候可以方便的处理集合遍历的问题,可是集合的标准遍历是使用迭代 ...
- 【java】Map、Set、List不同数据结构的各种不同循环迭代的效率对比,使用场景
Map.Set.List不同数据结构的各种不同循环迭代的效率对比,使用场景 引申一个地址:Map迭代的使用keySet和entitySet的效率
- Map的知识点梳理(不包含collections工具类)
一:基础公共方法(map不再是简单的加索引,可以直接命名key,通过key进行遍历) 1.常见的map子类 HashTable:底层是哈希表结构.不允许null键和null值,线程同步 HashMap ...
- 机器学习-Pandas 知识点汇总(吐血整理)
Pandas是一款适用很广的数据处理的组件,如果将来从事机械学习或者数据分析方面的工作,咱们估计70%的时间都是在跟这个框架打交道.那大家可能就有疑问了,心想这个破玩意儿值得花70%的时间吗?咱不是还 ...
- [Day20]Map接口、可变参数、Collections
1.Map接口-元素成对存在,每个元素由健与值两部分组成,通过键可以找所对应的值 1.1 Map子类 (1)HashMap<K,V>:存储数据所用的哈希表结构,元素的存取数据顺序不能保证一 ...
- 【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别
后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> ...
- JavaScript 数组、字符串、Map、Set 方法整理
在线阅读 https://www.kancloud.cn/chenmk/web-knowledges/1080519 数组 isArray():Array.isArray(value) 用于检测变量是 ...
随机推荐
- 【BZOJ1559】[JSOI2009]密码(AC自动机,动态规划,搜索)
[BZOJ1559][JSOI2009]密码(AC自动机,动态规划,搜索) 题面 BZOJ 洛谷 题解 首先求方案数显然是构建\(AC\)自动机之后再状压\(dp\),似乎没有什么好讲的. 现在考虑答 ...
- angular的一次小错误
前台页面的错误: 在使用angular的时候,发现了标签等不能解析,忙了一个小时没找见错误在哪,最后才发现,原来ng-app,ng-controller等声明错了地方,声明在了div上,而不是在bod ...
- centos7下设置opencv环境变量
最近要装YOLO,但是MAKE的时候总是找不到OPENCV的路径, 原因是:我以前卸载过一次OPENCV,然后自己重新安装了opencv2.4.10, 因为当时只在QT 中用,所以编译完也没有设置环 ...
- ceilometer主要组件分析
一.Agent 主要有compute agent 和central agent,还有一些其他的agent这里暂时不分析. agent初始化时会动态加载给定namespace的pollster插件,并通 ...
- JAVA多线程之线程的挂起与恢复(suspend方法与resume方法)
一,介绍 本文讨论JAVA多线程中,使用 thread.suspend()方法暂停线程,使用 thread.resume()恢复暂停的线程 的特点. 先介绍二个关于线程的基本知识: ①线程的执行体是r ...
- [软件]在浏览器里添加MarkDown Here(插件)
1. 先来说说这个插件的作用是什么: 用于在网页一些编辑文本的地方, 使用MacDown编辑文本 支持大部分浏览器, https://github.com/adam-p/markdown-here ...
- CSS-3 Transform 的使用
CSS3制作动画的几个属性:变形(transform).转换(transition)和动画(animation)等更高级的CSS3技术.这篇主要是 Transform 的使用. Transform 字 ...
- 【问题收集·知识储备】Xcode只能选择My Mac,不能选择模拟器如何解决?
网友问题:请问打开一个应用,只能选择My Mac,不能选择模拟器如何解决? 答案: 下面将问答过程记录如下: CHENYILONG Blog 请问打开一个应用,只能 ...
- Sortable.js参数
所有的事件回调函数都有两个参数:event和ui,浏览器自有event对象,和经过封装的ui对象ui.helper - 表示sortable元素的JQuery对象,通常是当前元素的克隆对象ui.pos ...
- MongoDB 之 $关键字 及 $修改器 $set $inc $push $pull $pop MongoDB - 4
我们在之前的 MongoDB 之 手把手教你增删改查 MongoDB - 2 中提到过 $set 这个系统关键字,用来修改值的对吧 但是MongoDB中类似这样的关键字有很多, $lt $gt $lt ...