Custom middle Element of array

Step 1>
package com.array;

import java.util.ArrayList;
import java.util.List;

public class MidOfArrayDemo {

@SuppressWarnings("rawtypes")
public static void main(String[] args) {
MidOfArray midOfArray=new MidOfArray();
List<String> list=new ArrayList<String>();
list.add("Kartik");
list.add("Mandal");
list.add("WB");
list.add("MEDINIPUR");
list.add("BANGALORE");
list.add("KARNATAKA");
list.add("INDIA");
list.add("Pallav");
list.add("Chaturvedi");
list.add("Delhi");
@SuppressWarnings("unchecked")
String aa=(String) midOfArray.midElement(list);
System.out.println(aa);
List<Integer> listInt=new ArrayList<Integer>();
listInt.add(1);
listInt.add(4);
listInt.add(5);
listInt.add(8);
listInt.add(6);
listInt.add(9);
listInt.add(2);
listInt.add(3);
listInt.add(7);
//listInt.add(13);
@SuppressWarnings("unchecked")
int i=(int) midOfArray.midElement(listInt);
System.out.println(i);
List<Double> listDouble=new ArrayList<Double>();
listDouble.add(1.0);
listDouble.add(4.0);
listDouble.add(5.0);
listDouble.add(8.0);
listDouble.add(6.0);
listDouble.add(9.0);
listDouble.add(2.0);
listDouble.add(3.0);
listDouble.add(7.0);
//listInt.add(13);
@SuppressWarnings("unchecked")
Double d=(Double) midOfArray.midElement(listDouble);
System.out.println(d);

}

}


Step 2>

package com.array;

import java.util.List;

public class MidOfArray<T> {
/**
* I'm guessing the answer wants one pointer to be traversing one element at
* a time, while the second pointer moves 2 elements at a time. This way
* when the second pointer reaches the end, the first pointer will be at the
* middle. Otherwise, download <a href =
* "http://stackoverflow.com/questions/16446355/how-to-find-a-middle-element-in-a-link-list-without-traversing-the-entire-list"
* >Section 1.0</a>
* @param pList
* @return
*/
public T midElement(List<T> pList) {
int length = 0;
int midLength=0;
T middle=null;
for (T abc : pList) {
length++;
            if(length % 2 == 0) {
            midLength=length;
            middle = pList.get(midLength/2);
            }else{
            midLength=length;
            if(midLength>0)
            midLength=midLength-1;
            middle = pList.get(midLength/2);
            }
}
       return middle;
    }

}


Output:
KARNATAKA
6
6.0

Previous
Next Post »