把一个字符串转化成整数:
1)通过Integer的构造方法进行转换:Integer t1=new Integer("100");
2)通过Integer的静态方法来进行转换:pareInt
3)通过Integer的静态方法来继续进行转换:valueOf
把一个整数转化成字符串:
1)调用String.valueOf()方法
2)调用Integer.Tostring()方法
3)调用String.format()方法,可以向整数转化成字符串
int a=10; String str=String.format("我是%d",a); System.out.println(str);
4)调用DecimalFormat.format()方法
int a=100; String strings=new DecimalFormat().format(a); System.out.println(strings);
5)使用字符串拼接的方式或者使用StringBuilder来进行拼接
再来介绍一下Map的常用方法:
Map<String,String> map=new HashMap<>();
map.put("及时雨","宋江");
map.put("国民女神","高圆圆");
map.put("豹子头","林冲");
map.put("煞笔","dddddd");
map.put("及时雨","孙悟空");//此时及时雨对应的值value值会更新;
String str1=map.get("宋江");//注意,这套语句()只能返回Key对应的value值,所以打印结果是null
String str2=map.get("及时雨");
String str3=map.getOrDefault("智商超群","李佳伟");//这条语句时返回key对应的value值,如果key不存在,返回默认值
map.remove("煞笔");//删除key对应的映射关系
Set<String> collection1=map.keySet();//将所有key的集合都放到Set里面,返回值是Set<key> 类型
Collection<String> collection2=map.values();//将所有values的值放到一个集合中,返回值的类型是Collection<value>
boolean flag1=map.containsKey("及时雨");
boolean flag2=map.containsValue("dddddd");
//Set<Map.entry<K,V>> entryset=map.entrySet();
//这句代码的意思是说,将当前map中的每一个key-value键值对整体变成Map.entry<K,V>类型,再把若干个Map.entry<K,V》
//类型放到Set中
Set<Map.Entry<String,String>> arr1=map.entrySet();
//int[] arr1<Integer>
for(Map.Entry<String,String> entryset:arr1)
{
System.out.println("key"+" "+entryset.getKey()+" "+"value"+entryset.getValue());
}
}
Map中的常见方法补充:
1)V get(Object Key) 返回Key对应的value
Map<String,Integer> map=new HashMap<>():
map.put("bite",1);
int ret=map.get("生命");//会出现空指针异常,Integer是引用类型,转化成int类型要进行拆包,而拆包调用的是intValue方法,此时出现的是空指针异常
2)V getOrDefault(Object Key,V defaultValue) 返回Key对应的Value,Key不存在,那么我们就返回默认值
3)V put(K key,V value)设置key对应的value;
4)V remove(Object key)删除key对应的映射关系
5)Set<K> keySet(),返回Map中所有key对应的映射集合
6)Collection<V> values()返回Map中所有value的可重复集合·
7)Set<Map.Entry<K,V>> entrySet(),返回所有的key-value的对应映射关系
8)boolean containsKey(Object Key),判断是否包含key
9)boolean containsValue(Object Value),判断是否包含value;
10)对于Map.Entry<K,V>从我的角度来进行理解,他就是一个类型,一个大集合,这个大集合里面存放了一对Key-Value值
K getKey() 返回entry中的key
V getValue()返回entry中的Value
V setValue(V value) 将键值对中的value替换成value;
Set中的常见方法补充:
1)boolean add(E e)添加元素,但是重复的元素是不会被添加成功的
2)void clear()清空集合
3)boolean contains(Object O)判断o是否在集合中
4)Iterator<E> iterator() 返回迭代器
5)int size() 返回Set中元素的个数
6)boolean isEmpty()检测set是否为空,空就返回false;
7)Object[] toArray();将Set中的元素转化成数组返回
8)boolean containsAll(Collection<?> c)判断集合c中的元素在set中是否全部存在,如果全部存在就返回true,相反就返回false;
9)boolean addAll(Collection<?extends E> c)将集合c中的元素放到set中,set中是不可以插入空的key值的
HashMap的构造方法:
此时我们遍历HashMap可以通过keySet,entrySet,还可以通过foreach的方法进行遍历
其中这个for each的方法在底层还是通过entryset来进行实现的:在这里面需要传入一个BiConsumer接口:
Map<String,String> map=new HashMap<>(); map.put("及时雨","生命在于运动"); map.forEach(new BiConsumer<String, String>() { @Override public void accept(String s, String s2) { System.out.println( s+s2); } }); }
1)public HashMap()----->无参构造
2)public HashMap(int 初始容量,int 负载因子)------>进行指定容量和负载因子进行构造对象
3)public HashMap(int 初始容量)--------->指定容量构造对象
4)public HashMap(Map<? extends K,? extends V> m,可以根据指定的map对象构建全新的HashMap对象
HashSet的构造方法:
1)public HashSet():无参构造方法
2)public HashSet(传入一个集合):根据集合对象构建HashSet
3)public HashSet(int 初始容量,float 负载因子)指定容量和负载因子进行构造
4)public HashSet(int 初始容量)
遍历Set集合:
1)通过迭代器来进行遍历
2)通过foreach来进行遍历
3)通过Interable接口中的forEach(传入一个接口,Consumer)来进行遍历,这里面的Consumer是一个函数式接口
HashSet<Integer> set=new HashSet<>(); set.add(1); set.add(4); set.add(10); set.forEach(new Consumer<Integer>() { @Override public void accept(Integer integer) { System.out.println(integer); } });
4)通过toArray()方法来进行遍历
Set<String> set =new HashSet<>(); set.add("bit1"); set.add("bit3"); set.add("bit4"); set.add("bit2"); Iterator<String> it= set.iterator(); while(it.hasNext())//检查序列中是否还有元素 { System.out.println(it.next());//获取下一个元素 } System.out.println(set); Object[] arr1=set.toArray();//将set里面的内容转化成数组; for(Object s:arr1) { System.out.println(s); } }
常见的大数据分析题:
1 有十万个数据,找到第一个重复的数据?
2 有十万个数据,去掉所有重复的数据?
3 有十万个数据,统计每个数据出现了多少次?
上代码 第2题:
ArrayList<Integer> list=new ArrayList<>();
Random random=new Random();
HashSet<Integer> set=new HashSet<>();
for(int i=0;i<1000;i++)
{
list.add(random.nextInt());//先把得到的随机数放到一个集合中,保存下来
}
for(int j=0;j<list.size();j++)
{
set.add(list.get(j));//将list中的值全部放到set集合中,因为set集合中不可以放重复的元素
//放到set中list原来的重复的元素就会被覆盖掉
}
System.out.println(map);
第一题:代码
用set来做
List<Integer> list=new ArrayList<>();
list.add(2);
list.add(3);
list.add(4);
list.add(6);
list.add(5);
list.add(3);
Set<Integer> set=new HashSet<>();
for (int j = 0; j < list.size(); j++) {
if(set.contains(list.get(j)))
{
System.out.println(list.get(j));
return array[j];
}
else
{
set.add(list.get(j));
}
}
}
还有一种方法,用map来做:
1)Key进行存放对应的整数,value存放对应的整数出现的次数
2)中心思想就是说判断array中的元素,是否出现在map里面,如果不在就是1,如果再就是原来的基础上+1;
Map<Integer,Integer> map=new HashMap<>();
ArrayList<Integer> list=new ArrayList<>();
list.add(2);
list.add(3);
list.add(4);
list.add(6);
list.add(5);
list.add(3);
for(int i=0;i<list.size();i++) {
if (!map.containsKey(list.get(i))) {
map.put(list.get(i), 1);
} else {
int count = map.get(list.get(i));
count++;
map.put(list.get(i), count);
}
}
for(int j=0;j<list.size();j++)
{
if(map.get(list.get(j))>1)
{
System.out.println(list.get(j));
break;
}
}
对于第三题则更简单
for(int j=0;j<list.size();j++)
{
System.out.println(list.get(j)+"出现了"+map.get(list.get(j))+"次");
}