1、写个时间复杂度为O(n)的算法,找到一个数列第二大的数
public int test(List list) {
int max=list[0];
int second=list[1];
if (secv>maxv){
Collections.swap(list,0,1);
}
for(int i = 0 ; i < list.length; i++) {
if (num[i]>maxv)
{
second=maxv;
max=num[i];
}
//num[i]<max这条判断不可少,否则最大元素重复时返回出错;
else if (num[i]<max&&num[i]>second)
{
second=num[i];
}
}
return second;
}
2、如何使用jdk1.8新特性从商品集合中单独把某一个字段(比如id)拿出来当做一个集合?
List <Integer> Ids = list.stream().map(User::getId).distinct().collect(Collectors.toList());
3、ArrayList和LinkedList的区别?
1、ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。
2、ArrayList进行增删改操作的效率比较高,LinkedList进行查询操作的效率比较高
3、LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
4、遍历Set和List的通用方法?
List<String> list = new ArrayList<String>();
Set<String> set = new HashSet<String>();
//1、使用for循环遍历
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i));
}
for(String str1:set) {
System.out.println(str1);
}
//2、使用foreach遍历
for (String str : list) {
System.out.println(str);
}
for(String str1:set) {
System.out.println(str1);
}
//3、使用迭代器遍历
Iterator<String> it = list.iterator();
while (it.hasNext()) {
String string = it.next();
System.out.println(string);
}
Iterator<String> it = set.iterator();
while(it.hasNext()) {
//定义一个字符串接收遍历的集合内容
String str2=it.next();
System.out.println(str2);
}
//4、使用lambda表达式遍历
list.forEach(n -> System.out.println(n));
set.forEach(n->System.out.println(n));
5、有几种方法可以遍历JAVA集合?
有四种主要的方法:1、使用for循环遍历。2、使用foreach遍历。3、使用迭代器遍历。4、使用lambda表达式遍历。
6、ArrayList哪些操作效率较高?
ArrayList在进行删除,增加,更新操作时的效率比较高。
持续更新中,敬请期待!
参考文章:
java1.8从list集合中抽取某个字段转为新的集合以及把list集合按某个字段进行分组 - uzxin - 博客园
JDK1.8 在对象List集合中取某属性值,并组成一个集合List_Java程序源的博客-CSDN博客
ArrayList与LinkedList的区别_smile&$的博客-CSDN博客_arraylist和linkedlist都是有序的吗