Remove DictionaryArray::keys_array method and replace usages by the keys method (#419)

diff --git a/arrow/src/array/array_dictionary.rs b/arrow/src/array/array_dictionary.rs
index 9b036da..168a439 100644
--- a/arrow/src/array/array_dictionary.rs
+++ b/arrow/src/array/array_dictionary.rs
@@ -70,26 +70,11 @@
 }
 
 impl<'a, K: ArrowPrimitiveType> DictionaryArray<K> {
-    /// Return an iterator to the keys of this dictionary.
+    /// Return an array view of the keys of this dictionary as a PrimitiveArray.
     pub fn keys(&self) -> &PrimitiveArray<K> {
         &self.keys
     }
 
-    /// Returns an array view of the keys of this dictionary
-    pub fn keys_array(&self) -> PrimitiveArray<K> {
-        let data = self.data_ref();
-        let keys_data = ArrayData::new(
-            K::DATA_TYPE,
-            data.len(),
-            Some(data.null_count()),
-            data.null_buffer().cloned(),
-            data.offset(),
-            data.buffers().to_vec(),
-            vec![],
-        );
-        PrimitiveArray::<K>::from(keys_data)
-    }
-
     /// Returns the lookup key by doing reverse dictionary lookup
     pub fn lookup_key(&self, value: &str) -> Option<K::Native> {
         let rd_buf: &StringArray =
@@ -379,7 +364,7 @@
         let test = vec!["a", "b", "c", "a"];
         let array: DictionaryArray<Int8Type> = test.into_iter().collect();
 
-        let keys = array.keys_array();
+        let keys = array.keys();
         assert_eq!(&DataType::Int8, keys.data_type());
         assert_eq!(0, keys.null_count());
         assert_eq!(&[0, 1, 2, 0], keys.values());
@@ -390,7 +375,7 @@
         let test = vec![Some("a"), None, Some("b"), None, None, Some("a")];
         let array: DictionaryArray<Int32Type> = test.into_iter().collect();
 
-        let keys = array.keys_array();
+        let keys = array.keys();
         assert_eq!(&DataType::Int32, keys.data_type());
         assert_eq!(3, keys.null_count());
 
diff --git a/arrow/src/array/builder.rs b/arrow/src/array/builder.rs
index 71fd9a9..3bbeaf7 100644
--- a/arrow/src/array/builder.rs
+++ b/arrow/src/array/builder.rs
@@ -3282,7 +3282,7 @@
         assert_eq!(array.is_null(1), true);
         assert_eq!(array.is_valid(1), false);
 
-        let keys = array.keys_array();
+        let keys = array.keys();
 
         assert_eq!(keys.value(0), 1);
         assert_eq!(keys.is_null(1), true);
diff --git a/arrow/src/array/ord.rs b/arrow/src/array/ord.rs
index c2c94f5..d7b1829 100644
--- a/arrow/src/array/ord.rs
+++ b/arrow/src/array/ord.rs
@@ -90,8 +90,8 @@
 {
     let left = left.as_any().downcast_ref::<DictionaryArray<T>>().unwrap();
     let right = right.as_any().downcast_ref::<DictionaryArray<T>>().unwrap();
-    let left_keys = left.keys_array();
-    let right_keys = right.keys_array();
+    let left_keys = left.keys();
+    let right_keys = right.keys();
 
     let left_values = StringArray::from(left.values().data().clone());
     let right_values = StringArray::from(right.values().data().clone());
diff --git a/arrow/src/compute/kernels/cast.rs b/arrow/src/compute/kernels/cast.rs
index 463da7c..150f1f6 100644
--- a/arrow/src/compute/kernels/cast.rs
+++ b/arrow/src/compute/kernels/cast.rs
@@ -1370,7 +1370,8 @@
                     )
                 })?;
 
-            let keys_array: ArrayRef = Arc::new(dict_array.keys_array());
+            let keys_array: ArrayRef =
+                Arc::new(PrimitiveArray::<K>::from(dict_array.keys().data().clone()));
             let values_array = dict_array.values();
             let cast_keys = cast_with_options(&keys_array, to_index_type, &cast_options)?;
             let cast_values =
@@ -1450,7 +1451,8 @@
         cast_with_options(&dict_array.values(), to_type, cast_options)?;
 
     // Note take requires first casting the indices to u32
-    let keys_array: ArrayRef = Arc::new(dict_array.keys_array());
+    let keys_array: ArrayRef =
+        Arc::new(PrimitiveArray::<K>::from(dict_array.keys().data().clone()));
     let indicies = cast_with_options(&keys_array, &DataType::UInt32, cast_options)?;
     let u32_indicies =
         indicies
diff --git a/arrow/src/compute/kernels/sort.rs b/arrow/src/compute/kernels/sort.rs
index feef00c..dff5695 100644
--- a/arrow/src/compute/kernels/sort.rs
+++ b/arrow/src/compute/kernels/sort.rs
@@ -600,7 +600,7 @@
 ) -> Result<UInt32Array> {
     let values: &DictionaryArray<T> = as_dictionary_array::<T>(values);
 
-    let keys: &PrimitiveArray<T> = &values.keys_array();
+    let keys: &PrimitiveArray<T> = values.keys();
 
     let dict = values.values();
     let dict: &StringArray = as_string_array(&dict);
@@ -1071,7 +1071,7 @@
             .as_any()
             .downcast_ref::<StringArray>()
             .expect("Unable to get dictionary values");
-        let sorted_keys = sorted.keys_array();
+        let sorted_keys = sorted.keys();
 
         assert_eq!(sorted_dict, dict);
 
diff --git a/arrow/src/compute/kernels/take.rs b/arrow/src/compute/kernels/take.rs
index d325ce4..66bfd61 100644
--- a/arrow/src/compute/kernels/take.rs
+++ b/arrow/src/compute/kernels/take.rs
@@ -755,7 +755,7 @@
     I: ArrowNumericType,
     I::Native: ToPrimitive,
 {
-    let new_keys = take_primitive::<T, I>(&values.keys_array(), indices)?;
+    let new_keys = take_primitive::<T, I>(values.keys(), indices)?;
     let new_keys_data = new_keys.data_ref();
 
     let data = ArrayData::new(
diff --git a/arrow/src/util/display.rs b/arrow/src/util/display.rs
index 61f549a..13d9f19 100644
--- a/arrow/src/util/display.rs
+++ b/arrow/src/util/display.rs
@@ -297,7 +297,7 @@
 ) -> Result<String> {
     let dict_array = colum.as_any().downcast_ref::<DictionaryArray<K>>().unwrap();
 
-    let keys_array = dict_array.keys_array();
+    let keys_array = dict_array.keys();
 
     if keys_array.is_null(row) {
         return Ok(String::from(""));