安卓面试Android知识Android技术知识

Java面试准备(Java集合)

2017-03-07  本文已影响67人  蒹葭流

ArrayList、LinkedList、Vector区别

Queue队列

其接口定义为:

public interface Queue<E> extends Collection<E> {
    //获取但不移除队列头,
    E element();
    //添加元素到队尾
    boolean offer(E o);
    //获取但不移除队列头的元素 
    E peek();
    //移除对头元素
    E poll();
    //移除对头元素
    E remove();
}
BlockingQueue与CountDownLatch

当容量满时,往BlockingQueue中添加数据时会造成阻塞。
当容量为空时,取元素操作会阻塞。

其两个常用子类是ArrayBlockingQueue和LinkedBlockingQueue。

public CountDownLatch(count); 
public void countDown(); 
public void await() ;

构造方法指定了计数的次数。countDown方法,当前线程调用此方法则计数减一。await方法,调用该方法会一直阻塞当前线程,直到计时器的值为0。

Map

常用的Map

ConcurrentHashMap

Map的遍历方法之一

HashMap<String,String> source = new HashMap<>();
for (Map.Entry<String,String> entry: source.entrySet()){
      System.out.println(entry.getKey());
      System.out.println(entry.getValue());
}

Map的遍历方法之二

Collection<String> values =source.values();
      for (Iterator<String> it = values.iterator(); it.hasNext();) {
          String s = it.next();
          System.out.println(s);
      }

Map的遍历方法之三

//需要Java8以上的版本
source.forEach((k,v)->System.out.println( k + " : " + v));

Collections、Collection与Arrays

ArrayList<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(5);
list.add(3);
list.add(2);
//默认升序,输出1 2 2 3 5
Collections.sort(list);
//降序,输出5 3 2 2 1
 Collections.sort(list, new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return o2-o1;
            }
        });

给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序,有些重载方法可以传入Comparator接口。
比较数组:通过equals方法比较数组中元素值是否相等。
查找数组元素:通过binarySearch方法能对排序好的数组进行二分查找法操作。

int[] ints=new int[5];
//数组全部赋值为6
Arrays.fill(ints,6);
//数组第2个和第4个赋值为7,未赋值的未0
Arrays.fill(ints,1,4,7);

//升序
Arrays.sort(ints);
//对第1个到第4个进行升序
Arrays.sort(ints,1,4);

int[] ints1=ints.clone();
Arrays.equals(ints,ints1); //true
int[] ints2=new int[5];
Arrays.fill(ints2,8);
Arrays.equals(ints,ints2);//true

//使用二分搜索算法查找指定元素所在的下标(必须是排序好的,否则结果不正确)
Arrays.sort(ints);
//会返回第一个找到的下标
System.out.println(Arrays.binarySearch(ints,6));
上一篇下一篇

猜你喜欢

热点阅读