[英]C# List implementation… in Java
我正在学习Java,并且正在尝试用Java在C#中做过的事情。
目标是将类“ MyItem”包装到“ MyItems”列表中。 这使得推理起来更容易( MyItems
比List<MyItem>
更容易阅读/理解...或者说,我需要使其变得更复杂,例如IEnumerable<KeyValuePair<string,List<Dictionary<int,bool>>>>
...然后请求MyKVPDictionaries
而不是List<IEnumberaable<KeyValuePair<...>>>>>
)。
只是环顾四周……似乎C#允许您保留东西的默认实现(看下面的.Add才有效)。
看一下Java ...有没有一种方法可以实现用c#完成的列表? 还是我必须手动实现列表的各个部分? (.add,.list,.contains等)。
下面,我在C#中实现了Class
...的“基本”实现和List<Class>
。
在Java中实现class MyItems implements List<MyItem>
真的需要做更多的工作,还是我缺少简化流程的内容?
(Java代码只是带有通过IntelliJ的Resharper“自动实施缺少的成员”存根的MyItems.java
类文件)。
C#版本.NetFiddle :
using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
var myItems = new MyItems();
myItems.Add(new MyItem("Hello"));
myItems.Add(new MyItem(" "));
myItems.Add(new MyItem("World"));
myItems.Add(new MyItem("!"));
foreach(var item in myItems)
Console.Write(item.Name);
}
}
public class MyItems : List<MyItem>
{
}
public class MyItem
{
public MyItem(string name)
{
Name = name;
}
public string Name { get; private set; }
}
Java版本开始/存根:
package items;
import java.util.Collection;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;
public class MyItems implements List<MyItem> {
@Override
public int size() {
return 0;
}
@Override
public boolean isEmpty() {
return false;
}
@Override
public boolean contains(Object o) {
return false;
}
@Override
public Iterator<MyItem> iterator() {
return null;
}
@Override
public Object[] toArray() {
return new Object[0];
}
@Override
public <T> T[] toArray(T[] a) {
return null;
}
@Override
public boolean add(MyItem generatePreSignedUrl) {
return false;
}
@Override
public boolean remove(Object o) {
return false;
}
@Override
public boolean containsAll(Collection<?> c) {
return false;
}
@Override
public boolean addAll(Collection<? extends MyItem> c) {
return false;
}
@Override
public boolean addAll(int index, Collection<? extends MyItem> c) {
return false;
}
@Override
public boolean removeAll(Collection<?> c) {
return false;
}
@Override
public boolean retainAll(Collection<?> c) {
return false;
}
@Override
public void clear() {
}
@Override
public MyItem get(int index) {
return null;
}
@Override
public MyItem set(int index, MyItem element) {
return null;
}
@Override
public void add(int index, MyItem element) {
}
@Override
public MyItem remove(int index) {
return null;
}
@Override
public int indexOf(Object o) {
return 0;
}
@Override
public int lastIndexOf(Object o) {
return 0;
}
@Override
public ListIterator<MyItem> listIterator() {
return null;
}
@Override
public ListIterator<MyItem> listIterator(int index) {
return null;
}
@Override
public List<MyItem> subList(int fromIndex, int toIndex) {
return null;
}
}
Java的List
类型是一个接口,与C#的IList
。 如果要实现它,则必须从头开始编写大多数方法。 与C#具体的List
类相对应的是Java的ArrayList
:
public class MyItems extends ArrayList<MyItem> {
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.